<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE javadoc SYSTEM "https://download.eclipse.org/ee4j/jakartaee-tck/CTS/XMLassertions/dtd/javadoc_assertions.dtd">
<!--

    Copyright (c) 2024 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<javadoc>
  <next-available-id>1364</next-available-id>
  <previous-id>1353</previous-id>
  <technology>JAXRS</technology>
  <id>JAXRS</id>
  <name>JavaTM API for RESTful Web Services</name>
  <version>4.0</version>
  <assertions>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- UNMODIFIED ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>2</id>
      <description>Defines the name of the HTTP cookie whose value will be used to initialize the value of the annotated method argument, class field or bean property.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>CookieParam</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>3</id>
      <description>The specified default value.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>DefaultValue</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>4</id>
      <description>Defines the name of the form parameter whose value will be used to initialize the value of the annotated method argument. The name is specified in decoded form, any percent encoded literals within the value will not be decoded and will instead be treated as literal text. E.g. if the parameter name is "a b" then the value of the annotation is "a b", not "a+b" or "a%20b".</description>
      <package>jakarta.ws.rs</package>
      <class-interface>FormParam</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>5</id>
      <description>Defines the name of the HTTP header whose value will be used to initialize the value of the annotated method argument, class field or bean property. Case insensitive.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>HeaderParam</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>6</id>
      <description>Specifies the name of a HTTP method. E.g. "GET".</description>
      <package>jakarta.ws.rs</package>
      <class-interface>HttpMethod</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>7</id>
      <description>Defines the name of the URI matrix parameter whose value will be used to initialize the value of the annotated method argument, class field or bean property. The name is specified in decoded form, any percent encoded literals within the value will not be decoded and will instead be treated as literal text. E.g. if the parameter name is "a b" then the value of the annotation is "a b", not "a+b" or "a%20b".</description>
      <package>jakarta.ws.rs</package>
      <class-interface>MatrixParam</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>8</id>
      <description>Defines a URI template for the resource class or method, must not include matrix parameters. Embedded template parameters are allowed and are of the form: param = "{" *WSP name *WSP [ ":" *WSP regex *WSP ] "}" name = (ALPHA / DIGIT / "_")*(ALPHA / DIGIT / "." / "_" / "-" ) ; \w[\w\.-]* regex = *( nonbrace / "{" *nonbrace "}" ) ; where nonbrace is any char other than "{" and "}" See RFC 5234 for a description of the syntax used above and the expansions of WSP, ALPHA and DIGIT. In the above name is the template parameter name and the optional regex specifies the contents of the capturing group for the parameter. If regex is not supplied then a default value of [^/]+ which terminates at a path segment boundary, is used. Matching of request URIs to URI templates is performed against encoded path values and implementations will not escape literal characters in regex automatically, therefore any literals in regex should be escaped by the author according to the rules of RFC 3986 section 3.3. Caution is recommended in the use of regex, incorrect use can lead to a template parameter matching unexpected URI paths. See Pattern for further information on the syntax of regular expressions. Values of template parameters may be extracted using PathParam. The literal part of the supplied value (those characters that are not part of a template parameter) is automatically percent encoded to conform to the path production of RFC 3986 section 3.3. Note that percent encoded values are allowed in the literal part of the value, an implementation will recognize such values and will not double encode the '%' character.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>Path</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>9</id>
      <description>Defines the name of the URI template parameter whose value will be used to initialize the value of the annotated method parameter, class field or property. See Path#value() for a description of the syntax of template parameters. E.g. a class annotated with: @Path("widgets/{id}") can have methods annotated whose arguments are annotated with @PathParam("id").</description>
      <package>jakarta.ws.rs</package>
      <class-interface>PathParam</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>11</id>
      <description>Defines the name of the HTTP query parameter whose value will be used to initialize the value of the annotated method argument, class field or bean property. The name is specified in decoded form, any percent encoded literals within the value will not be decoded and will instead be treated as literal text. E.g. if the parameter name is "a b" then the value of the annotation is "a b", not "a+b" or "a%20b".</description>
      <package>jakarta.ws.rs</package>
      <class-interface>QueryParam</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>12</id>
      <description>Get the HTTP response.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="getResponse" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>13</id>
      <description>Construct a new instance with a default HTTP status code of 500 and a default message generated from the HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>14</id>
      <description>Construct a new instance using the supplied response and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>15</id>
      <description>Construct a new instance with the supplied HTTP status code and a default message generated from the HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>16</id>
      <description>Construct a new instance with the supplied HTTP status and a default message generated from the HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>17</id>
      <description>Construct a new instance with the supplied root cause, default HTTP status code of 500 and a default message generated from the HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>18</id>
      <description>Construct a new instance with the supplied root cause, response and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>19</id>
      <description>Construct a new instance with the supplied root cause, HTTP status code and a default message generated from the HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>20</id>
      <description>Construct a new instance with the supplied root cause, HTTP status code and a default message generated from the HTTP status code and the associated HTTP status reason phrase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>21</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Application</class-interface>
      <method name="Application" return-type="Application" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>22</id>
      <description>Get a set of root resource, provider and Feature feature classes. The default life-cycle for resource class instances is per-request. The default life-cycle for providers (registered directly or via a feature) is singleton. Implementations should warn about and ignore classes that do not conform to the requirements of root resource or provider/feature classes. Implementations should warn about and ignore classes for which #getSingletons() returns an instance. Implementations MUST NOT modify the returned set. The default implementation returns an empty set.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Application</class-interface>
      <method name="getClasses" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>24</id>
      <description>Create a new instance of CacheControl. The new instance will have the following default settings: private = false noCache = false noStore = false noTransform = true mustRevalidate = false proxyRevalidate = false An empty list of private fields An empty list of no-cache fields An empty map of cache extensions</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="CacheControl" return-type="CacheControl" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>25</id>
      <description>Compares object argument to this cache control to see if they are the same considering all property values.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>26</id>
      <description>Corresponds to a set of extension cache control directives.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="getCacheExtension" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>27</id>
      <description>Corresponds to the max-age cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="getMaxAge" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>28</id>
      <description>Corresponds to the value of the no-cache cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="getNoCacheFields" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>29</id>
      <description>Corresponds to the value of the private cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="getPrivateFields" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>30</id>
      <description>Corresponds to the s-maxage cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="getSMaxAge" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>31</id>
      <description>Generate hash code from cache control properties.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>32</id>
      <description>Corresponds to the must-revalidate cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="isMustRevalidate" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>33</id>
      <description>Corresponds to the no-cache cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="isNoCache" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>34</id>
      <description>Corresponds to the no-store cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="isNoStore" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>35</id>
      <description>Corresponds to the no-transform cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="isNoTransform" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>36</id>
      <description>Corresponds to the private cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="isPrivate" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>37</id>
      <description>Corresponds to the proxy-revalidate cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="isProxyRevalidate" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>38</id>
      <description>Corresponds to the max-age cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setMaxAge" return-type="void">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>39</id>
      <description>Corresponds to the must-revalidate cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setMustRevalidate" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>40</id>
      <description>Corresponds to the no-cache cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setNoCache" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>41</id>
      <description>Corresponds to the no-store cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setNoStore" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>42</id>
      <description>Corresponds to the no-transform cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setNoTransform" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>43</id>
      <description>Corresponds to the private cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setPrivate" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>44</id>
      <description>Corresponds to the must-revalidate cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setProxyRevalidate" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>45</id>
      <description>Corresponds to the s-maxage cache control directive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="setSMaxAge" return-type="void">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>52</id>
      <description>Compare for equality.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>53</id>
      <description>Get the domain of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="getDomain" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>54</id>
      <description>Get the name of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="getName" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>55</id>
      <description>Get the path of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="getPath" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>56</id>
      <description>Get the value of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="getValue" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>57</id>
      <description>Get the version of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="getVersion" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>58</id>
      <description>Generate a hash code by hashing all of the cookies properties.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>62</id>
      <description>Creates a new instance of a strong EntityTag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="EntityTag" return-type="EntityTag">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>63</id>
      <description>Creates a new instance of an EntityTag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="EntityTag" return-type="EntityTag">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>64</id>
      <description>Compares obj to this tag to see if they are the same considering weakness and value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>65</id>
      <description>Get the value of an EntityTag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="getValue" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>66</id>
      <description>Generate hashCode based on value and weakness.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>67</id>
      <description>Check the strength of an EntityTag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="isWeak" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>71</id>
      <description>Create a new instance of GenericEntity, supplying the generic type information. The entity must be assignable to a variable of the supplied generic type, e.g. if entity is an instance of ArrayList then genericType could be the same or a superclass of ArrayList with the same generic type like List.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericEntity</class-interface>
      <method name="GenericEntity" return-type="GenericEntity">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.reflect.Type</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>72</id>
      <description>Get the enclosed entity.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericEntity</class-interface>
      <method name="getEntity" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>73</id>
      <description>Gets the raw type of the enclosed entity. Note that this is the raw type of the instance, not the raw type of the type parameter. I.e. in the example in the introduction, the raw type is ArrayList not List.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericEntity</class-interface>
      <method name="getRawType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>74</id>
      <description>Gets underlying Type instance. Note that this is derived from the type parameter, not the enclosed instance. I.e. in the example in the introduction, the type is List not ArrayList.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericEntity</class-interface>
      <method name="getType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>75</id>
      <description>Get a list of languages that are acceptable for the response. If no acceptable languages are specified, a read-only list containing a single wildcard java.util.Locale instance (with language field set to "*") is returned.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getAcceptableLanguages" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>76</id>
      <description>Get a list of media types that are acceptable for the response. If no acceptable media types are specified, a read-only list containing a single jakarta.ws.rs.core.MediaType#WILDCARD_TYPE wildcard media type instance is returned.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getAcceptableMediaTypes" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>77</id>
      <description>Get any cookies that accompanied the request.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getCookies" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>78</id>
      <description>Get the language of the request entity.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>79</id>
      <description>Get the media type of the request entity.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>81</id>
      <description>Get the values of HTTP request headers. The returned Map is case-insensitive wrt. keys and is read-only. The method never returns null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getRequestHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>82</id>
      <description>Compares obj to this media type to see if they are the same by comparing type, subtype and parameters. Note that the case-sensitivity of parameter values is dependent on the semantics of the parameter name, see HTTP/1.1. This method assumes that values are case-sensitive. Note that the equals(...) implementation does not perform a class equality check (this.getClass() == obj.getClass()). Therefore any class that extends from MediaType class and needs to override one of the equals(...) and #hashCode() methods must always override both methods to ensure the contract between Object#equals(java.lang.Object) and Object#hashCode() does not break.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>83</id>
      <description>Getter for a read-only parameter map. Keys are case-insensitive.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="getParameters" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>84</id>
      <description>Getter for subtype.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="getSubtype" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>85</id>
      <description>Getter for primary type.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="getType" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>86</id>
      <description>Generate a hash code from the type, subtype and parameters. Note that the #equals(java.lang.Object) implementation does not perform a class equality check (this.getClass() == obj.getClass()). Therefore any class that extends from MediaType class and needs to override one of the #equals(Object) and hashCode() methods must always override both methods to ensure the contract between Object#equals(java.lang.Object) and Object#hashCode() does not break.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>88</id>
      <description>Checks if the subtype is a wildcard.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="isWildcardSubtype" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>89</id>
      <description>Checks if the primary type is a wildcard.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="isWildcardType" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>90</id>
      <description>Creates a new instance of MediaType with the supplied type, subtype and parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="MediaType" return-type="MediaType">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>91</id>
      <description>Creates a new instance of MediaType with the supplied type and subtype.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="MediaType" return-type="MediaType">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>92</id>
      <description>Creates a new instance of MediaType, both type and subtype are wildcards. Consider using the constant #WILDCARD_TYPE instead.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="MediaType" return-type="MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>93</id>
      <description>Convert the media type to a string suitable for use as the value of a corresponding HTTP header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>94</id>
      <description>Creates a new instance of MediaType by parsing the supplied string.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.MediaType">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>96</id>
      <description>Add a value to the current list of values for the supplied key.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedMap</class-interface>
      <method name="add" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>97</id>
      <description>A shortcut to get the first value of the supplied key.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedMap</class-interface>
      <method name="getFirst" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>98</id>
      <description>Set the key's value to be a one item list consisting of the supplied value. Any existing values will be replaced.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedMap</class-interface>
      <method name="putSingle" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>99</id>
      <description>Compare for equality. Use #toCookie() to compare a NewCookie to a Cookie considering only the common properties.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>100</id>
      <description>Get the comment associated with the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="getComment" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>101</id>
      <description>Get the maximum age of the the cookie in seconds. Cookies older than the maximum age are discarded. A cookie can be unset by sending a new cookie with maximum age of 0 since it will overwrite any existing cookie and then be immediately discarded. The default value of -1 indicates that the cookie will be discarded at the end of the browser/application session. Note that it is recommended to use Max-Age to control cookie expiration, however some browsers do not understand Max-Age, in which case setting #getExpiry() Expires} parameter may be necessary.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="getMaxAge" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>102</id>
      <description>Generate a hash code by hashing all of the properties.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>103</id>
      <description>Whether the cookie will only be sent over a secure connection. Defaults to false.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="isSecure" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>109</id>
      <description>Obtain a new instance of a Cookie with the same name, value, path, domain and version as this NewCookie. This method can be used to obtain an object that can be compared for equality with another Cookie; since a Cookie will never compare equal to a NewCookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="toCookie" return-type="jakarta.ws.rs.core.Cookie" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>113</id>
      <description>Get a map of the matrix parameters associated with the path segment. The map keys are the names of the matrix parameters with any percent-escaped octets decoded.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>PathSegment</class-interface>
      <method name="getMatrixParameters" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>114</id>
      <description>Get the path segment.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>PathSegment</class-interface>
      <method name="getPath" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>115</id>
      <description>Evaluate request preconditions based on the passed in value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Request</class-interface>
      <method name="evaluatePreconditions" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.EntityTag</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>116</id>
      <description>Evaluate request preconditions based on the passed in value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Request</class-interface>
      <method name="evaluatePreconditions" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>117</id>
      <description>Evaluate request preconditions based on the passed in value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Request</class-interface>
      <method name="evaluatePreconditions" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.Date</parameter>
          <parameter>jakarta.ws.rs.core.EntityTag</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>118</id>
      <description>Get the request method, e.g. GET, POST, etc.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Request</class-interface>
      <method name="getMethod" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>119</id>
      <description>Select the representation variant that best matches the request. Returns null in case there is no matching variant in the list. More explicit variants are chosen ahead of less explicit ones. A vary header is computed from the supplied list and automatically added to the response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Request</class-interface>
      <method name="selectVariant" return-type="jakarta.ws.rs.core.Variant">
        <parameters>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>121</id>
      <description>Create a new ResponseBuilder for a created resource, set the location header using the supplied value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="created" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>122</id>
      <description>Create a new ResponseBuilder by performing a shallow copy of an existing Response. The returned builder has its own #getHeaders() response headers but the header values are shared with the original Response instance. The original response entity instance reference is set in the new response builder. Note that if the entity is backed by an un-consumed input stream, the reference to the stream is copied. In such case make sure to #bufferEntity() buffer the entity stream of the original response instance before passing it to this method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="fromResponse" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>123</id>
      <description>Get the message entity Java instance. Returns null if the message does not contain an entity body. If the entity is represented by an un-consumed InputStream input stream the method will return the input stream.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getEntity" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>124</id>
      <description>See #getHeaders(). This method is considered deprecated. Users are encouraged to switch their code to use the getHeaders() method instead. The method may be annotated as Deprecated #64;Deprecated in a future release of JAX-RS API.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getMetadata" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>125</id>
      <description>Get the status code associated with the response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getStatus" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>126</id>
      <description>Create a new ResponseBuilder for an empty response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="noContent" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>127</id>
      <description>Create a new ResponseBuilder for a not acceptable response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="notAcceptable" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>128</id>
      <description>Create a new ResponseBuilder with a not-modified status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="notModified" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>129</id>
      <description>Create a new ResponseBuilder with a not-modified status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="notModified" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.EntityTag</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>130</id>
      <description>Create a new ResponseBuilder with a not-modified status and a strong entity tag. This is a shortcut for notModified(new EntityTag(value)).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="notModified" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>131</id>
      <description>Create a new ResponseBuilder with an OK status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="ok" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>132</id>
      <description>Create a new ResponseBuilder that contains a representation. It is the callers responsibility to wrap the actual entity with GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="ok" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>133</id>
      <description>Create a new ResponseBuilder that contains a representation. It is the callers responsibility to wrap the actual entity with GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="ok" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>134</id>
      <description>Create a new ResponseBuilder that contains a representation. It is the callers responsibility to wrap the actual entity with GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="ok" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>135</id>
      <description>Create a new ResponseBuilder that contains a representation. It is the callers responsibility to wrap the actual entity with GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="ok" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.Variant</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>136</id>
      <description>Create a new ResponseBuilder for a redirection. Used in the redirect-after-POST (aka POST/redirect/GET) pattern.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="seeOther" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>137</id>
      <description>Create a new ResponseBuilder with an server error status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="serverError" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>138</id>
      <description>Create a new ResponseBuilder with the supplied status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>139</id>
      <description>Create a new ResponseBuilder with the supplied status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>140</id>
      <description>Create a new ResponseBuilder for a temporary redirection.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="temporaryRedirect" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>141</id>
      <description>Create a Response instance from the current ResponseBuilder. The builder is reset to a blank state equivalent to calling the ok method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>142</id>
      <description>Set the cache control data of the message.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="cacheControl" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.CacheControl</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>143</id>
      <description>Create a copy of the ResponseBuilder preserving its state.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="clone" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>144</id>
      <description>Set the content location.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="contentLocation" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>145</id>
      <description>Add cookies to the response message.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="cookie" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.NewCookie[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>146</id>
      <description>Set the response entity in the builder. Any Java type instance for a response entity, that is supported by the runtime can be passed. It is the callers responsibility to wrap the actual entity with GenericEntity if preservation of its generic type is required. Note that the entity can be also set as an java.io.InputStream input stream. A specific entity media type can be set using one of the type(...) methods.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="entity" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>147</id>
      <description>Set the response expiration date.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="expires" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>148</id>
      <description>Add an arbitrary header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="header" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>149</id>
      <description>Set the message entity language.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="language" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>150</id>
      <description>Set the message entity language.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="language" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.Locale</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>151</id>
      <description>Set the response entity last modification date.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="lastModified" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>152</id>
      <description>Set the location.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="location" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>153</id>
      <description>Set the status on the ResponseBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>154</id>
      <description>Set the status on the ResponseBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>155</id>
      <description>Set a response entity tag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="tag" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.EntityTag</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>156</id>
      <description>Set a strong response entity tag. This is a shortcut for tag(new EntityTag(value)).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="tag" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>157</id>
      <description>Set the message entity media type.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="type" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>158</id>
      <description>Set the message entity media type.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="type" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>159</id>
      <description>Set message entity representation metadata. Equivalent to setting the values of content type, content language, and content encoding separately using the values of the variant properties.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="variant" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Variant</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>160</id>
      <description>Add a Vary header that lists the available variants.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="variants" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>161</id>
      <description>Convert a numerical status code into the corresponding Status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status</class-interface>
      <method name="fromStatusCode" return-type="jakarta.ws.rs.core.Response.Response.Status">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>162</id>
      <description>Get the class of status code.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status</class-interface>
      <method name="getFamily" return-type="jakarta.ws.rs.core.Response.Status.Response.Status.Family" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>163</id>
      <description>Get the associated status code.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status</class-interface>
      <method name="getStatusCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>164</id>
      <description>Get the reason phrase.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>165</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.Response.Response.Status">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>166</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status</class-interface>
      <method name="values" return-type="jakarta.ws.rs.core.Response.Response.Status[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>167</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status.Family</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.Response.Status.Response.Status.Family">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>168</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status.Family</class-interface>
      <method name="values" return-type="jakarta.ws.rs.core.Response.Status.Response.Status.Family[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>169</id>
      <description>Returns the string value of the authentication scheme used to protect the resource. If the resource is not authenticated, null is returned. Values are the same as the CGI variable AUTH_TYPE</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>SecurityContext</class-interface>
      <method name="getAuthenticationScheme" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>170</id>
      <description>Returns a java.security.Principal object containing the name of the current authenticated user. If the user has not been authenticated, the method returns null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>SecurityContext</class-interface>
      <method name="getUserPrincipal" return-type="java.security.Principal" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>171</id>
      <description>Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>SecurityContext</class-interface>
      <method name="isSecure" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>172</id>
      <description>Returns a boolean indicating whether the authenticated user is included in the specified logical "role". If the user has not been authenticated, the method returns false.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>SecurityContext</class-interface>
      <method name="isUserInRole" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>173</id>
      <description>Called to write the message body.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>StreamingOutput</class-interface>
      <method name="write" return-type="void">
        <parameters>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>174</id>
      <description>if an IO error is encountered</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>StreamingOutput</class-interface>
      <method name="write" return-type="void">
        <parameters>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>175</id>
      <description>if a specific HTTP error response needs to be produced. Only effective if thrown prior to any bytes being written to output.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>StreamingOutput</class-interface>
      <method name="write" return-type="void">
        <parameters>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>176</id>
      <description>Build a URI, using the supplied values in order to replace any URI template parameters. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All '%' characters in the stringified values will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance. All instances of the same template parameter will be replaced by the same value that corresponds to the position of the first instance of the template parameter. e.g. the template "{a}/{b}/{a}" with values {"x", "y", "z"} will result in the the URI "x/y/x", not "x/y/z". NOTE: By default all '/' characters in the stringified values will be encoded in path templates, i.e. the result is identical to invoking #build(Object[], boolean) build(values, true)}. To override this behavior use build(values, false) instead.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="build" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>177</id>
      <description>if there are any URI template parameters without a supplied value, or if a value is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="build" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>178</id>
      <description>if a URI cannot be constructed based on the current state of the builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="build" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.ws.rs.core.UriBuilderException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>179</id>
      <description>Build a URI. Any URI templates parameters will be replaced with the supplied values in order. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All % characters in the stringified values that are not followed by two hexadecimal numbers will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance. All instances of the same template parameter will be replaced by the same value that corresponds to the position of the first instance of the template parameter. e.g. the template "{a}/{b}/{a}" with values {"x", "y", "z"} will result in the the URI "x/y/x", not "x/y/z".</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromEncoded" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>180</id>
      <description>if there are any URI template parameters without a supplied value, or if a value is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromEncoded" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>181</id>
      <description>if a URI cannot be constructed based on the current state of the builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromEncoded" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.ws.rs.core.UriBuilderException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>182</id>
      <description>Build a URI. Any URI template parameters will be replaced by the value in the supplied map. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All % characters in the stringified values that are not followed by two hexadecimal numbers will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromEncodedMap" return-type="java.net.URI">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>183</id>
      <description>if there are any URI template parameters without a supplied value, or if a template parameter value is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromEncodedMap" return-type="java.net.URI">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>184</id>
      <description>if a URI cannot be constructed based on the current state of the builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromEncodedMap" return-type="java.net.URI">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
        <throw>jakarta.ws.rs.core.UriBuilderException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>185</id>
      <description>Build a URI. Any URI template parameters will be replaced by the value in the supplied map. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All '%' characters in the stringified values will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance. NOTE: By default all '/' characters in the stringified values will be encoded in path templates, i.e. the result is identical to invoking #buildFromMap(java.util.Map, boolean) buildFromMap(valueMap, true). To override this behavior use buildFromMap(valueMap, false) instead.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromMap" return-type="java.net.URI">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>188</id>
      <description>Create a copy of the UriBuilder preserving its state. This is a more efficient means of creating a copy than constructing a new UriBuilder from a URI returned by the #build(Object...) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="clone" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>189</id>
      <description>Set the URI fragment.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fragment" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>190</id>
      <description>Create a new instance representing a relative URI initialized from a URI path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fromPath" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>191</id>
      <description>if path is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fromPath" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>192</id>
      <description>Create a new instance representing a relative URI initialized from a root resource class.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fromResource" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>194</id>
      <description>Create a new instance initialized from an existing URI.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fromUri" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>196</id>
      <description>Create a new instance initialized from an existing URI.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fromUri" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>198</id>
      <description>Set the URI host.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="host" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>200</id>
      <description>Append a matrix parameter to the existing set of matrix parameters of the current final segment of the URI path. If multiple values are supplied the parameter will be added once per value. Note that the matrix parameters are tied to a particular path segment; subsequent addition of path segments will not affect their position in the URI path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="matrixParam" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>202</id>
      <description>Append path to the existing path. When constructing the final path, a '/' separator will be inserted between the existing path and the supplied path if necessary. Existing '/' characters are preserved thus a single value can represent multiple URI path segments.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="path" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>204</id>
      <description>Append the path from a Path-annotated class to the existing path. When constructing the final path, a '/' separator will be inserted between the existing path and the supplied path if necessary.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="path" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>206</id>
      <description>Append the path from a Path-annotated method to the existing path. When constructing the final path, a '/' separator will be inserted between the existing path and the supplied path if necessary. This method is a convenience shortcut to path(Method), it can only be used in cases where there is a single method with the specified name that is annotated with jakarta.ws.rs.Path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="path" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>208</id>
      <description>Append the path from a jakarta.ws.rs.Path-annotated method to the existing path. When constructing the final path, a '/' separator will be inserted between the existing path and the supplied path if necessary.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="path" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.reflect.Method</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>210</id>
      <description>Set the URI port.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="port" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>212</id>
      <description>Append a query parameter to the existing set of query parameters. If multiple values are supplied the parameter will be added once per value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="queryParam" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>214</id>
      <description>Set the matrix parameters of the current final segment of the current URI path. This method will overwrite any existing matrix parameters on the current final segment of the current URI path. Note that the matrix parameters are tied to a particular path segment; subsequent addition of path segments will not affect their position in the URI path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="replaceMatrix" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>216</id>
      <description>Replace the existing value(s) of a matrix parameter on the current final segment of the URI path. If multiple values are supplied the parameter will be added once per value. Note that the matrix parameters are tied to a particular path segment; subsequent addition of path segments will not affect their position in the URI path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="replaceMatrixParam" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>218</id>
      <description>Set the URI path. This method will overwrite any existing path and associated matrix parameters. Existing '/' characters are preserved thus a single value can represent multiple URI path segments.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="replacePath" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>219</id>
      <description>Set the URI query string. This method will overwrite any existing query parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="replaceQuery" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>221</id>
      <description>Replace the existing value(s) of a query parameter. If multiple values are supplied the parameter will be added once per value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="replaceQueryParam" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>223</id>
      <description>Set the URI scheme.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="scheme" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>225</id>
      <description>Set the URI scheme-specific-part (see java.net.URI). This method will overwrite any existing values for authority, user-info, host, port and path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="schemeSpecificPart" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>227</id>
      <description>Append path segments to the existing path. When constructing the final path, a '/' separator will be inserted between the existing path and the first path segment if necessary and each supplied segment will also be separated by '/'. Existing '/' characters are encoded thus a single value can only represent a single URI path segment.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="segment" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>229</id>
      <description>Copies the non-null components of the supplied URI to the UriBuilder replacing any existing values for those components.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="uri" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>231</id>
      <description>Set the URI user-info.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="userInfo" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>232</id>
      <description>Creates a new instance of UriBuilderException without detail message.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilderException</class-interface>
      <method name="UriBuilderException" return-type="UriBuilderException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>233</id>
      <description>Constructs an instance of UriBuilderException with the specified detail message.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilderException</class-interface>
      <method name="UriBuilderException" return-type="UriBuilderException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>234</id>
      <description>Constructs an instance of UriBuilderException with the specified detail message and cause. Note that the detail message associated with cause is not automatically incorporated in this exception's detail message.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilderException</class-interface>
      <method name="UriBuilderException" return-type="UriBuilderException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>235</id>
      <description>Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause). This constructor is useful for exceptions that are little more than wrappers for other throwables.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilderException</class-interface>
      <method name="UriBuilderException" return-type="UriBuilderException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>236</id>
      <description>Get the absolute path of the request. This includes everything preceding the path (host, port etc) but excludes query parameters. This is a shortcut for uriInfo.getBaseUri().resolve(uriInfo.getPath(false)).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getAbsolutePath" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>237</id>
      <description>Get the absolute path of the request in the form of a UriBuilder. This includes everything preceding the path (host, port etc) but excludes query parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getAbsolutePathBuilder" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>238</id>
      <description>Get the base URI of the application. URIs of root resource classes are all relative to this base URI.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getBaseUri" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>239</id>
      <description>Get the base URI of the application in the form of a UriBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getBaseUriBuilder" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>242</id>
      <description>Get a read-only list of URIs for matched resources. Each entry is a relative URI that matched a resource class, a sub-resource method or a sub-resource locator. Entries do not include query parameters but do include matrix parameters if present in the request URI. Entries are ordered in reverse request URI matching order, with the current resource URI first. See #getMatchedURIs() for an example. In case the method is invoked prior to the request matching (e.g. from a pre-matching filter), the method returns an empty list.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getMatchedURIs" return-type="java.util.List">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>243</id>
      <description>Get the path of the current request relative to the base URI as a string. All sequences of escaped octets are decoded, equivalent to #getPath(boolean) getPath(true).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getPath" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>244</id>
      <description>Get the path of the current request relative to the base URI as a string.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getPath" return-type="java.lang.String">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>245</id>
      <description>Get the values of any embedded URI template parameters. All sequences of escaped octets are decoded, equivalent to #getPathParameters(boolean) getPathParameters(true).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getPathParameters" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>246</id>
      <description>Get the values of any embedded URI template parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getPathParameters" return-type="jakarta.ws.rs.core.MultivaluedMap">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>247</id>
      <description>Get the path of the current request relative to the base URI as a list of PathSegment. This method is useful when the path needs to be parsed, particularly when matrix parameters may be present in the path. All sequences of escaped octets in path segments and matrix parameter values are decoded, equivalent to getPathSegments(true).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getPathSegments" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>248</id>
      <description>Get the path of the current request relative to the base URI as a list of PathSegment. This method is useful when the path needs to be parsed, particularly when matrix parameters may be present in the path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getPathSegments" return-type="java.util.List">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>249</id>
      <description>Get the URI query parameters of the current request. The map keys are the names of the query parameters with any escaped characters decoded. All sequences of escaped octets in parameter names and values are decoded, equivalent to #getQueryParameters(boolean) getQueryParameters(true).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getQueryParameters" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>250</id>
      <description>Get the URI query parameters of the current request. The map keys are the names of the query parameters with any escaped characters decoded.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getQueryParameters" return-type="jakarta.ws.rs.core.MultivaluedMap">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>251</id>
      <description>Get the absolute request URI including any query parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getRequestUri" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>252</id>
      <description>Get the absolute request URI in the form of a UriBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getRequestUriBuilder" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>253</id>
      <description>Create a VariantListBuilder initialized with a set of supported encodings.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="encodings" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>254</id>
      <description>Compares obj to this variant to see if they are the same considering all property values.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>255</id>
      <description>Get the encoding of the variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="getEncoding" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>256</id>
      <description>Get the language of the variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>257</id>
      <description>Get the media type of the variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>258</id>
      <description>Generate hash code from variant properties.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>259</id>
      <description>Create a VariantListBuilder initialized with a set of supported languages.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="languages" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder">
        <parameters>
          <parameter>java.util.Locale[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>260</id>
      <description>Create a VariantListBuilder initialized with a set of supported media types.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="mediaTypes" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>261</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>262</id>
      <description>Create a new instance of Variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="Variant" return-type="Variant">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>java.util.Locale</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>263</id>
      <description>Add the current combination of metadata to the list of supported variants, after this method is called the current combination of metadata is emptied. If more than one value is supplied for one or more of the variant properties then a variant will be generated for each possible combination. E.g. in the following list would have five (4 + 1) members: List list = VariantListBuilder.newInstance() .languages(Locale.ENGLISH, Locale.FRENCH).encodings("zip", "identity").add() .languages(Locale.GERMAN).mediaTypes(MediaType.TEXT_PLAIN_TYPE).add() .build() Note that it is not necessary to call the add() method immediately before the build method is called. E.g. the resulting list produced in the example above would be identical to the list produced by the following code: List list = VariantListBuilder.newInstance() .languages(Locale.ENGLISH, Locale.FRENCH).encodings("zip", "identity").add() .languages(Locale.GERMAN).mediaTypes(MediaType.TEXT_PLAIN_TYPE) .build()</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant.VariantListBuilder</class-interface>
      <method name="add" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>264</id>
      <description>Add the current combination of metadata to the list of supported variants (provided the current combination of metadata is not empty) and build a list of representation variants from the current state of the builder. After this method is called the builder is reset to an empty state.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant.VariantListBuilder</class-interface>
      <method name="build" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>265</id>
      <description>Set the encoding(s) for this variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant.VariantListBuilder</class-interface>
      <method name="encodings" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>266</id>
      <description>Set the language(s) for this variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant.VariantListBuilder</class-interface>
      <method name="languages" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder">
        <parameters>
          <parameter>java.util.Locale[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>267</id>
      <description>Set the media type(s) for this variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant.VariantListBuilder</class-interface>
      <method name="mediaTypes" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>268</id>
      <description>Create a new builder instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant.VariantListBuilder</class-interface>
      <method name="newInstance" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>269</id>
      <description>Get a context of type T that is applicable to the supplied type.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ContextResolver</class-interface>
      <method name="getContext" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>270</id>
      <description>Map an exception to a jakarta.ws.rs.core.Response. Returning null results in a jakarta.ws.rs.core.Response.Status#NO_CONTENT response. Throwing a runtime exception results in a jakarta.ws.rs.core.Response.Status#INTERNAL_SERVER_ERROR response.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ExceptionMapper</class-interface>
      <method name="toResponse" return-type="jakarta.ws.rs.core.Response">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>271</id>
      <description>Ascertain if the MessageBodyReader can produce an instance of a particular type. The type parameter gives the class of the instance that should be produced, the genericType parameter gives the java.lang.reflect.Type java.lang.reflect.Type of the instance that should be produced. E.g. if the instance to be produced is List, the type parameter will be java.util.List and the genericType parameter will be java.lang.reflect.ParameterizedType java.lang.reflect.ParameterizedType.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyReader</class-interface>
      <method name="isReadable" return-type="boolean">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>272</id>
      <description>Read a type from the InputStream. In case the entity input stream is empty, the reader is expected to either return a Java representation of a zero-length entity or throw a jakarta.ws.rs.core.NoContentException in case no zero-length entity representation is defined for the supported Java type. A NoContentException, if thrown by a message body reader while reading a server request entity, is automatically translated by JAX-RS server runtime into a jakarta.ws.rs.BadRequestException wrapping the original NoContentException and rethrown for a standard processing by the registered jakarta.ws.rs.ext.ExceptionMapper exception mappers.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyReader</class-interface>
      <method name="readFrom" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
          <parameter>java.io.InputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>273</id>
      <description>if an IO error arises. In case the entity input stream is empty and the reader is not able to produce a Java representation for a zero-length entity, NoContentException is expected to be thrown.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyReader</class-interface>
      <method name="readFrom" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
          <parameter>java.io.InputStream</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>274</id>
      <description>if a specific HTTP error response needs to be produced. Only effective if thrown prior to the response being committed.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyReader</class-interface>
      <method name="readFrom" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
          <parameter>java.io.InputStream</parameter>
        </parameters>
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>275</id>
      <description>Originally, the method has been called before writeTo to ascertain the length in bytes of the serialized form of t. A non-negative return value has been used in a HTTP Content-Length header. As of JAX-RS 2.0, the method has been deprecated and the value returned by the method is ignored by a JAX-RS runtime. All MessageBodyWriter implementations are advised to return -1 from the method. Responsibility to compute the actual Content-Length header value has been delegated to JAX-RS runtime.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyWriter</class-interface>
      <method name="getSize" return-type="long">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>276</id>
      <description>Ascertain if the MessageBodyWriter supports a particular type.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyWriter</class-interface>
      <method name="isWriteable" return-type="boolean">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>277</id>
      <description>Write a type to an HTTP message. The message header map is mutable but any changes must be made before writing to the output stream since the headers will be flushed prior to writing the message body.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyWriter</class-interface>
      <method name="writeTo" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>278</id>
      <description>if an IO error arises.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyWriter</class-interface>
      <method name="writeTo" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>279</id>
      <description>if a specific HTTP error response needs to be produced. Only effective if thrown prior to the message being committed.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>MessageBodyWriter</class-interface>
      <method name="writeTo" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>281</id>
      <description>Get an exception mapping provider for a particular class of exception. Returns the provider whose generic type is the nearest superclass of type.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>Providers</class-interface>
      <method name="getExceptionMapper" return-type="jakarta.ws.rs.ext.ExceptionMapper">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>284</id>
      <description>Create a configured instance of the supplied endpoint type. How the returned endpoint instance is published is dependent on the type of endpoint.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createEndpoint" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.Application</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>285</id>
      <description>if application is null or the requested endpoint type is not supported.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createEndpoint" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.Application</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>286</id>
      <description>if the implementation supports no endpoint types.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createEndpoint" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.Application</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.UnsupportedOperationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>287</id>
      <description>Obtain an instance of a HeaderDelegate for the supplied class. An implementation is required to support the following values for type: jakarta.ws.rs.core.CacheControl, jakarta.ws.rs.core.Cookie, jakarta.ws.rs.core.EntityTag, jakarta.ws.rs.core.Link, jakarta.ws.rs.core.NewCookie, jakarta.ws.rs.core.MediaType and java.util.Date.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createHeaderDelegate" return-type="jakarta.ws.rs.ext.RuntimeDelegate.RuntimeDelegate.HeaderDelegate">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>288</id>
      <description>Create a new instance of a jakarta.ws.rs.core.Response.ResponseBuilder.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createResponseBuilder" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>289</id>
      <description>Create a new instance of a jakarta.ws.rs.core.UriBuilder.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createUriBuilder" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>290</id>
      <description>Create a new instance of a jakarta.ws.rs.core.Variant.VariantListBuilder.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createVariantListBuilder" return-type="jakarta.ws.rs.core.Variant.Variant.VariantListBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>291</id>
      <description>Obtain a RuntimeDelegate instance. If an instance had not already been created and set via #setInstance(RuntimeDelegate), the first invocation will create an instance which will then be cached for future use. The algorithm used to locate the RuntimeDelegate subclass to use consists of the following steps: If a resource with the name of META-INF/services/jakarta.ws.rs.ext.RuntimeDelegate exists, then its first line, if present, is used as the UTF-8 encoded name of the implementation class. If the $java.home/lib/jaxrs.properties file exists and it is readable by the java.util.Properties.load(InputStream) method and it contains an entry whose key is jakarta.ws.rs.ext.RuntimeDelegate, then the value of that entry is used as the name of the implementation class. If a system property with the name jakarta.ws.rs.ext.RuntimeDelegate is defined, then its value is used as the name of the implementation class. Finally, a default implementation class name is used.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="getInstance" return-type="jakarta.ws.rs.ext.RuntimeDelegate" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>292</id>
      <description>Set the runtime delegate that will be used by JAX-RS classes. If this method is not called prior to #getInstance then an implementation will be sought as described in #getInstance.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="setInstance" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.ext.RuntimeDelegate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>294</id>
      <description>Parse the supplied value and create an instance of T.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate.HeaderDelegate</class-interface>
      <method name="fromString" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>296</id>
      <description>Convert the supplied value to a String.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate.HeaderDelegate</class-interface>
      <method name="toString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>297</id>
      <description>Defines the base URI for all resource URIs. A trailing '/' character will be automatically appended if one is not present. The supplied value is automatically percent encoded to conform to the path production of RFC 3986 section 3.3. Note that percent encoded values are allowed in the value, an implementation will recognize such values and will not double encode the '%' character.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ApplicationPath</class-interface>
      <method name="value" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>299</id>
      <description>Create a new ResponseBuilder with the supplied status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.StatusType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>300</id>
      <description>Set the status on the ResponseBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.StatusType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>301</id>
      <description>Get the reason phrase.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status</class-interface>
      <method name="getReasonPhrase" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>302</id>
      <description>Get the class of status code.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.StatusType</class-interface>
      <method name="getFamily" return-type="jakarta.ws.rs.core.Response.Status.Response.Status.Family" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>303</id>
      <description>Get the reason phrase.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.StatusType</class-interface>
      <method name="getReasonPhrase" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>304</id>
      <description>Get the associated status code.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.StatusType</class-interface>
      <method name="getStatusCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>305</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>306</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>307</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>308</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>310</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>311</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>312</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>313</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>314</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>int</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>315</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>319</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>320</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>321</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>322</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>326</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>327</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>328</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>329</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>331</id>
      <description>Construct a new method not allowed exception. Note that this constructor does not validate the presence of HTTP Allow header. I.e. it is possible to use the constructor to create a client-side exception instance even for an invalid HTTP 405 response content returned from a server.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>332</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>333</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>334</id>
      <description>Get the list of authorization challenges associated with the exception and applicable to the resource requested by the client.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="getChallenges" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>335</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>336</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>337</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>338</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>339</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>340</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>341</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>342</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>343</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>344</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>345</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>346</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>347</id>
      <description>Get the redirection response location.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="getLocation" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>348</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>349</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>int</parameter>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>350</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>351</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>352</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>353</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>354</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>355</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>int</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>356</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>357</id>
      <description>Get the retry time for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="getRetryTime" return-type="java.util.Date">
        <parameters>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>359</id>
      <description>Construct a new "service unavailable" exception without any "Retry-After" information specified for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>360</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.Long</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>361</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>362</id>
      <description>Construct a new "service unavailable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>363</id>
      <description>Construct a new "service unavailable" exception with a date specifying the "Retry-After" information for the failed request and an underlying request failure cause.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.util.Date</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>364</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request and an underlying request failure cause.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.Long</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>365</id>
      <description>Construct a new "service unavailable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>375</id>
      <description>Invoke HTTP DELETE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.Future" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>376</id>
      <description>Invoke HTTP DELETE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>377</id>
      <description>Invoke HTTP DELETE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>378</id>
      <description>Invoke HTTP DELETE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>379</id>
      <description>Invoke HTTP GET method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. Note that in case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.Future" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>380</id>
      <description>Invoke HTTP GET method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>381</id>
      <description>Invoke HTTP GET method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>382</id>
      <description>Invoke HTTP GET method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>383</id>
      <description>Invoke HTTP HEAD method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="head" return-type="java.util.concurrent.Future" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>384</id>
      <description>Invoke HTTP HEAD method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="head" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>385</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>386</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>387</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>388</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>389</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>390</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>391</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>392</id>
      <description>Invoke an arbitrary method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>393</id>
      <description>Invoke HTTP OPTIONS method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.Future" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>394</id>
      <description>Invoke HTTP OPTIONS method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>395</id>
      <description>Invoke HTTP OPTIONS method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>396</id>
      <description>Invoke HTTP OPTIONS method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>397</id>
      <description>Invoke HTTP POST method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>398</id>
      <description>Invoke HTTP POST method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>399</id>
      <description>Invoke HTTP POST method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>400</id>
      <description>Invoke HTTP POST method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>401</id>
      <description>Invoke HTTP PUT method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>402</id>
      <description>Invoke HTTP PUT method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>403</id>
      <description>Invoke HTTP PUT method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>404</id>
      <description>Invoke HTTP PUT method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>405</id>
      <description>Invoke HTTP TRACE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.Future" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>406</id>
      <description>Invoke HTTP TRACE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>407</id>
      <description>Invoke HTTP TRACE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>408</id>
      <description>Invoke HTTP TRACE method for the current request asynchronously. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a jakarta.ws.rs.ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>AsyncInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>409</id>
      <description>Close client instance and all its associated resources. Subsequent calls have no effect and are ignored. Once the client is closed, invoking any other method on the client instance would result in an IllegalStateException being thrown. Calling this method effectively invalidates all WebTarget resource targets produced by the client instance. Invoking any method on such targets once the client is closed would result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>411</id>
      <description>Build an invocation builder from a link. It uses the URI and the type of the link to initialize the invocation builder. The type is used as the initial value for the HTTP Accept header, if present.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="invocation" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>413</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>416</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>418</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>jakarta.ws.rs.core.UriBuilder</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>420</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>427</id>
      <description>Abort the filter chain with a response. This method breaks the filter chain processing and returns the provided response back to the client. The provided response goes through the chain of applicable response filters.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="abortWith" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>428</id>
      <description>Get a list of languages that are acceptable for the response.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getAcceptableLanguages" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>429</id>
      <description>Get a list of media types that are acceptable for the response.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getAcceptableMediaTypes" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>430</id>
      <description>Get the client instance associated with the request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getClient" return-type="jakarta.ws.rs.client.Client" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>432</id>
      <description>Get any cookies that accompanied the request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getCookies" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>433</id>
      <description>Get message date.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getDate" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>434</id>
      <description>Get the message entity Java instance. Returns null if the message does not contain an entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntity" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>435</id>
      <description>Get the annotations attached to the entity instance. Note that the returned annotations array contains only those annotations explicitly attached to entity instance (such as the ones attached using Entity#Entity(Object, jakarta.ws.rs.core.MediaType, java.lang.annotation.Annotation[]) method). The entity instance annotations array does not include annotations declared on the entity implementation class or its ancestors.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityAnnotations" return-type="java.lang.annotation.Annotation[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>436</id>
      <description>Get the raw entity type information.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityClass" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>437</id>
      <description>Get the entity output stream. The JAX-RS runtime is responsible for closing the output stream.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityStream" return-type="java.io.OutputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>438</id>
      <description>Get the generic entity type information.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>439</id>
      <description>Get the mutable request headers multivalued map.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>441</id>
      <description>Get the language of the entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>442</id>
      <description>Get the media type of the entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>443</id>
      <description>Get the request method.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getMethod" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>444</id>
      <description>Returns the property with the given name registered in the current request/response exchange context, or null if there is no property by that name. A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface. A list of supported properties can be retrieved using #getPropertyNames(). Custom property names should follow the same convention as package names.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getProperty" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>446</id>
      <description>Get a string view of header values associated with the message. Changes in the underlying #getHeaders() headers map are reflected in this view. The method converts the non-string header values to strings using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the class of the value or using the values toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getStringHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>447</id>
      <description>Get the request URI.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getUri" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>448</id>
      <description>Check if there is an entity available in the request. The method returns true if the entity is present, returns false otherwise.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="hasEntity" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>449</id>
      <description>Removes a property with the given name from the current request/response exchange context. After removal, subsequent calls to #getProperty to retrieve the property value will return null.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="removeProperty" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>450</id>
      <description>Set a new message entity, including the attached annotations and the media type. It is the callers responsibility to wrap the actual entity with jakarta.ws.rs.core.GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="setEntity" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>451</id>
      <description>Set a new entity output stream. The JAX-RS runtime is responsible for closing the output stream.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="setEntityStream" return-type="void">
        <parameters>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>452</id>
      <description>Set the request method.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="setMethod" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>453</id>
      <description>Binds an object to a given property name in the current request/response exchange context. If the name specified is already used for a property, this method will replace the value of the property with the new value. A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface. A list of supported properties can be retrieved using #getPropertyNames(). Custom property names should follow the same convention as package names. If a null value is passed, the effect is the same as calling the #removeProperty(String) method.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="setProperty" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>454</id>
      <description>Set a new request URI.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="setUri" return-type="void">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>455</id>
      <description>Filter method called before a request has been dispatched to a client transport layer. Filters in the filter chain are ordered according to their jakarta.annotation.Priority class-level annotation value.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.client.ClientRequestContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>456</id>
      <description>if an I/O exception occurs.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.client.ClientRequestContext</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>457</id>
      <description>Get the allowed HTTP methods from the Allow HTTP header.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getAllowedMethods" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>458</id>
      <description>Get any new cookies set on the response message.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getCookies" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>459</id>
      <description>Get message date.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getDate" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>460</id>
      <description>Get the entity input stream. The JAX-RS runtime is responsible for closing the input stream.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getEntityStream" return-type="java.io.InputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>461</id>
      <description>Get the entity tag.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getEntityTag" return-type="jakarta.ws.rs.core.EntityTag" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>462</id>
      <description>Get the mutable response headers multivalued map.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>463</id>
      <description>Get a message header as a single string value.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>464</id>
      <description>Get the language of the entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>465</id>
      <description>Get the last modified date.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getLastModified" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>466</id>
      <description>Get Content-Length value.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getLength" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>467</id>
      <description>Get the link for the relation.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getLink" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>468</id>
      <description>Convenience method that returns a jakarta.ws.rs.core.Link.Builder Link.Builder for the relation.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getLinkBuilder" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>469</id>
      <description>Get the links attached to the message as header.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getLinks" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>470</id>
      <description>Get the location.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getLocation" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>471</id>
      <description>Get the media type of the entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>472</id>
      <description>Get the status code associated with the response.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getStatus" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>473</id>
      <description>Get the complete status information associated with the response.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="getStatusInfo" return-type="jakarta.ws.rs.core.Response.Response.StatusType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>474</id>
      <description>Check if there is a non-empty entity input stream is available in the response message. The method returns true if the entity is present, returns false otherwise.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="hasEntity" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>475</id>
      <description>Check if link for relation exists.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="hasLink" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>476</id>
      <description>Set a new entity input stream. The JAX-RS runtime is responsible for closing the input stream.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="setEntityStream" return-type="void">
        <parameters>
          <parameter>java.io.InputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>477</id>
      <description>Set a new response status code.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="setStatus" return-type="void">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>478</id>
      <description>Set the complete status information (status code and reason phrase) associated with the response.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="setStatusInfo" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.StatusType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>480</id>
      <description>if an I/O exception occurs.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.client.ClientRequestContext</parameter>
          <parameter>jakarta.ws.rs.client.ClientResponseContext</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>492</id>
      <description>Create an entity using a supplied content media type.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="entity" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>493</id>
      <description>Create an entity using a supplied content media type.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="entity" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>494</id>
      <description>Create an entity using a supplied content media type.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="entity" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>496</id>
      <description>Create an entity using a supplied content media type.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="entity" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.Variant</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>497</id>
      <description>Create an entity using a supplied content media type.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="entity" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.Variant</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>500</id>
      <description>Get the entity annotations.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="getAnnotations" return-type="java.lang.annotation.Annotation[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>501</id>
      <description>Get entity encoding.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="getEncoding" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>502</id>
      <description>Get entity data.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="getEntity" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>503</id>
      <description>Get entity language.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>504</id>
      <description>Get entity media type.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>505</id>
      <description>Get entity Variant variant information.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="getVariant" return-type="jakarta.ws.rs.core.Variant" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>512</id>
      <description>Synchronously invoke the request and receive a response back.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="invoke" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>514</id>
      <description>Synchronously invoke the request and receive a response of the specified type back.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>517</id>
      <description>Synchronously invoke the request and receive a response of the specified generic type back.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>520</id>
      <description>Submit the request for an asynchronous invocation and receive a future response back. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps a ProcessingException thrown in case of an invocation processing failure. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="submit" return-type="java.util.concurrent.Future" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>521</id>
      <description>Submit the request for an asynchronous invocation and receive a future response of the specified type back. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="submit" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>522</id>
      <description>Submit the request for an asynchronous invocation and receive a future response of the specified generic type back. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the specified response type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="submit" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>523</id>
      <description>Submit the request for an asynchronous invocation and register an InvocationCallback to process the future result of the invocation. Note that calling the java.util.concurrent.Future#get() method on the returned Future instance may throw an java.util.concurrent.ExecutionException that wraps either a ProcessingException thrown in case of an invocation processing failure or a WebApplicationException or one of its subclasses thrown in case the received response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic type of the supplied response callback is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the Response instance whose processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="submit" return-type="java.util.concurrent.Future">
        <parameters>
          <parameter>jakarta.ws.rs.client.InvocationCallback</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>524</id>
      <description>Add acceptable languages.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="acceptLanguage" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.util.Locale[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>525</id>
      <description>Add acceptable languages.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="acceptLanguage" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>526</id>
      <description>Access the asynchronous uniform request invocation interface to asynchronously invoke the built request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="async" return-type="jakarta.ws.rs.client.AsyncInvoker" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>527</id>
      <description>Build a request invocation using an arbitrary request method name.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.client.Invocation">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>528</id>
      <description>Build a request invocation using an arbitrary request method name and request entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.client.Invocation">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>529</id>
      <description>Build a DELETE request invocation.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="buildDelete" return-type="jakarta.ws.rs.client.Invocation" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>530</id>
      <description>Build a GET request invocation.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="buildGet" return-type="jakarta.ws.rs.client.Invocation" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>531</id>
      <description>Build a POST request invocation.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="buildPost" return-type="jakarta.ws.rs.client.Invocation">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>532</id>
      <description>Build a PUT request invocation.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="buildPut" return-type="jakarta.ws.rs.client.Invocation">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>533</id>
      <description>Set the cache control data of the message.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="cacheControl" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.CacheControl</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>535</id>
      <description>Add a cookie to be set.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="cookie" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Cookie</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>536</id>
      <description>Add a cookie to be set.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="cookie" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>537</id>
      <description>Add an arbitrary header.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="header" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>538</id>
      <description>Replaces all existing headers with the newly supplied headers.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="headers" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>539</id>
      <description>Called when the invocation was successfully completed. Note that this does not necessarily mean the response has bean fully read, which depends on the parameterized invocation callback response type. Once this invocation callback method returns, the underlying jakarta.ws.rs.core.Response instance will be automatically closed by the runtime.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>InvocationCallback</class-interface>
      <method name="completed" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>541</id>
      <description>Invoke HTTP DELETE method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="delete" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>543</id>
      <description>Invoke HTTP DELETE method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>546</id>
      <description>Invoke HTTP DELETE method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>549</id>
      <description>Invoke HTTP GET method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="get" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>551</id>
      <description>Invoke HTTP GET method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="get" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>554</id>
      <description>Invoke HTTP GET method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="get" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>557</id>
      <description>Invoke HTTP HEAD method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="head" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>559</id>
      <description>Invoke an arbitrary method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="method" return-type="jakarta.ws.rs.core.Response">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>561</id>
      <description>Invoke an arbitrary method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>564</id>
      <description>Invoke an arbitrary method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>567</id>
      <description>Invoke an arbitrary method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="method" return-type="jakarta.ws.rs.core.Response">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>569</id>
      <description>Invoke an arbitrary method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>572</id>
      <description>Invoke an arbitrary method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>575</id>
      <description>Invoke HTTP OPTIONS method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="options" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>577</id>
      <description>Invoke HTTP OPTIONS method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="options" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>580</id>
      <description>Invoke HTTP OPTIONS method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="options" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>583</id>
      <description>Invoke HTTP POST method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="post" return-type="jakarta.ws.rs.core.Response">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>585</id>
      <description>Invoke HTTP POST method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>588</id>
      <description>Invoke HTTP POST method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>591</id>
      <description>Invoke HTTP PUT method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="put" return-type="jakarta.ws.rs.core.Response">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>593</id>
      <description>Invoke HTTP PUT method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>596</id>
      <description>Invoke HTTP PUT method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>599</id>
      <description>Invoke HTTP TRACE method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="trace" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>601</id>
      <description>Invoke HTTP TRACE method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>604</id>
      <description>Invoke HTTP TRACE method for the current request synchronously.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>SyncInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>608</id>
      <description>Get the URI identifying the resource.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="getUri" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>609</id>
      <description>Get the URI builder initialized with the URI of the current resource target. The returned URI builder is detached from the target, i.e. any updates in the URI builder MUST NOT have any effects on the URI of the originating target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="getUriBuilder" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>610</id>
      <description>Create a new WebTarget instance by appending a matrix parameter to the existing set of matrix parameters of the current final segment of the URI of the current target instance. If multiple values are supplied the parameter will be added once per value. In case a single null value is entered, all parameters with that name in the current final path segment are removed (if present) from the collection of last segment matrix parameters inherited from the current target. Note that the matrix parameters are tied to a particular path segment; appending a value to an existing matrix parameter name will not affect the position of the matrix parameter in the URI path. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="matrixParam" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>612</id>
      <description>Create a new WebTarget instance by appending path to the URI of the current target instance. When constructing the final path, a '/' separator will be inserted between the existing path and the supplied path if necessary. Existing '/' characters are preserved thus a single value can represent multiple URI path segments. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="path" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>618</id>
      <description>Create a new WebTarget instance by configuring a query parameter on the URI of the current target instance. If multiple values are supplied the parameter will be added once per value. In case a single null value is entered, all parameters with that name are removed (if present) from the collection of query parameters inherited from the current target. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="queryParam" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>622</id>
      <description>Start building a request to the targeted web resource.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="request" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>623</id>
      <description>Start building a request to the targeted web resource and define the accepted response media types. Invoking this method is identical to: webTarget.request().accept(types);</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="request" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>624</id>
      <description>Start building a request to the targeted web resource and define the accepted response media types. Invoking this method is identical to: webTarget.request().accept(types);</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="request" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>628</id>
      <description>Check if the asynchronous response instance has been cancelled. Method returns true if this asynchronous response has been canceled before completion.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="isCancelled" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>629</id>
      <description>Check if the processing of a request this asynchronous response instance belongs to has finished. Method returns true if the processing of a request this asynchronous response is bound to is finished. The request processing may be finished due to a normal termination, a suspend timeout, or cancellation -- in all of these cases, this method will return true.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="isDone" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>630</id>
      <description>Check if the asynchronous response instance is in a suspended state. Method returns true if this asynchronous response is still suspended and has not finished processing yet (either by resuming or canceling the response).</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="isSuspended" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>645</id>
      <description>Set/replace a time-out handler for the suspended asynchronous response. The time-out handler will be invoked when the suspend period of this asynchronous response times out. The job of the time-out handler is to resolve the time-out situation by either resuming the suspended response cancelling the suspended response extending the suspend period by setting a new suspend time-out Note that in case the response is suspended #NO_TIMEOUT indefinitely, the time-out handler may never be invoked.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="setTimeoutHandler" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.TimeoutHandler</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="false" impl-spec="false" status="active" testable="true">
      <id>648</id>
      <description>This callback notification method is invoked in case the container detects that the remote client connection associated with the asynchronous response has been disconnected.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ConnectionCallback</class-interface>
      <method name="onDisconnect" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.AsyncResponse</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>649</id>
      <description>Abort the filter chain with a response. This method breaks the filter chain processing and returns the provided response back to the client. The provided response goes through the chain of applicable response filters.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="abortWith" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>650</id>
      <description>Get a list of languages that are acceptable for the response.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getAcceptableLanguages" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>651</id>
      <description>Get a list of media types that are acceptable for the response.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getAcceptableMediaTypes" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>652</id>
      <description>Get any cookies that accompanied the request.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getCookies" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>653</id>
      <description>Get message date.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getDate" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>654</id>
      <description>Get the entity input stream. The JAX-RS runtime is responsible for closing the input stream.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getEntityStream" return-type="java.io.InputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>655</id>
      <description>Get the mutable request headers multivalued map.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>656</id>
      <description>Get a message header as a single string value.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>657</id>
      <description>Get the language of the entity.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>658</id>
      <description>Get Content-Length value.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getLength" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>659</id>
      <description>Get the media type of the entity.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>660</id>
      <description>Get the request method.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getMethod" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>661</id>
      <description>Returns the property with the given name registered in the current request/response exchange context, or null if there is no property by that name. A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface. A list of supported properties can be retrieved using #getPropertyNames(). Custom property names should follow the same convention as package names. In a Servlet container, the properties are synchronized with the ServletRequest and expose all the attributes available in the ServletRequest. Any modifications of the properties are also reflected in the set of properties of the associated ServletRequest.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getProperty" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>663</id>
      <description>Get the injectable request information.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getRequest" return-type="jakarta.ws.rs.core.Request" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>664</id>
      <description>Get the injectable security context information for the current request. The SecurityContext#getUserPrincipal() must return null if the current request has not been authenticated.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getSecurityContext" return-type="jakarta.ws.rs.core.SecurityContext" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>665</id>
      <description>Get request URI information. The returned object contains "live" view of the request URI information in a sense that any changes made to the request URI using one of the setRequestUri(...) methods will be reflected in the previously returned UriInfo instance.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getUriInfo" return-type="jakarta.ws.rs.core.UriInfo" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>666</id>
      <description>Check if there is a non-empty entity input stream available in the request message. The method returns true if the entity is present, returns false otherwise.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="hasEntity" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>667</id>
      <description>Removes a property with the given name from the current request/response exchange context. After removal, subsequent calls to #getProperty to retrieve the property value will return null. In a Servlet container, the properties are synchronized with the ServletRequest and expose all the attributes available in the ServletRequest. Any modifications of the properties are also reflected in the set of properties of the associated ServletRequest.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="removeProperty" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>668</id>
      <description>Set a new entity input stream. The JAX-RS runtime is responsible for closing the input stream.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="setEntityStream" return-type="void">
        <parameters>
          <parameter>java.io.InputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>669</id>
      <description>Set the request method. Note that the method is usable only in pre-matching filters, prior to the resource matching occurs. Trying to invoke the method in a filter bound to a resource method results in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="setMethod" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>671</id>
      <description>Binds an object to a given property name in the current request/response exchange context. If the name specified is already used for a property, this method will replace the value of the property with the new value. A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface. A list of supported properties can be retrieved using #getPropertyNames(). Custom property names should follow the same convention as package names. If a null value is passed, the effect is the same as calling the #removeProperty(String) method. In a Servlet container, the properties are synchronized with the ServletRequest and expose all the attributes available in the ServletRequest. Any modifications of the properties are also reflected in the set of properties of the associated ServletRequest.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="setProperty" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>672</id>
      <description>Set a new request URI using the current base URI of the application to resolve the application-specific request URI part. Note that the method is usable only in pre-matching filters, prior to the resource matching occurs. Trying to invoke the method in a filter bound to a resource method results in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="setRequestUri" return-type="void">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>674</id>
      <description>Set a new request URI using a new base URI to resolve the application-specific request URI part. Note that the method is usable only in pre-matching filters, prior to the resource matching occurs. Trying to invoke the method in a filter bound to a resource method results in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="setRequestUri" return-type="void">
        <parameters>
          <parameter>java.net.URI</parameter>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>676</id>
      <description>Set a new injectable security context information for the current request. The SecurityContext#getUserPrincipal() must return null if the current request has not been authenticated.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="setSecurityContext" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.core.SecurityContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>677</id>
      <description>Filter method called before a request has been dispatched to a resource. Filters in the filter chain are ordered according to their jakarta.annotation.Priority class-level annotation value. If a request filter produces a response by calling ContainerRequestContext#abortWith method, the execution of the (either pre-match or post-match) request filter chain is stopped and the response is passed to the corresponding response filter chain (either pre-match or post-match). For example, a pre-match caching filter may produce a response in this way, which would effectively skip any post-match request filters as well as post-match response filters. Note however that a responses produced in this manner would still be processed by the pre-match response filter chain.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.ContainerRequestContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>678</id>
      <description>if an I/O exception occurs.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.ContainerRequestContext</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>679</id>
      <description>Get the allowed HTTP methods from the Allow HTTP header.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getAllowedMethods" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>680</id>
      <description>Get any new cookies set on the response message.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getCookies" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>681</id>
      <description>Get message date.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getDate" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>682</id>
      <description>Get the message entity Java instance. Returns null if the message does not contain an entity.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getEntity" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>684</id>
      <description>Get the raw entity type information.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getEntityClass" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>685</id>
      <description>Get the entity output stream. The JAX-RS runtime is responsible for closing the output stream.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getEntityStream" return-type="java.io.OutputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>686</id>
      <description>Get the entity tag.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getEntityTag" return-type="jakarta.ws.rs.core.EntityTag" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>687</id>
      <description>Get the generic entity type information.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getEntityType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>688</id>
      <description>Get the mutable response headers multivalued map.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>690</id>
      <description>Get the language of the entity.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>691</id>
      <description>Get the last modified date.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getLastModified" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>692</id>
      <description>Get Content-Length value.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getLength" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>693</id>
      <description>Get the link for the relation.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getLink" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>694</id>
      <description>Convenience method that returns a jakarta.ws.rs.core.Link.Builder Link.Builder for the relation.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getLinkBuilder" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>695</id>
      <description>Get the links attached to the message as header.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getLinks" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>696</id>
      <description>Get the location.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getLocation" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>697</id>
      <description>Get the media type of the entity.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>698</id>
      <description>Get the status code associated with the response.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getStatus" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>699</id>
      <description>Get the complete status information associated with the response.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getStatusInfo" return-type="jakarta.ws.rs.core.Response.Response.StatusType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>700</id>
      <description>Get a string view of header values associated with the message. Changes in the underlying #getHeaders() headers map are reflected in this view. The method converts the non-string header values to strings using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the class of the value or using the values toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getStringHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>701</id>
      <description>Check if there is an entity available in the response. The method returns true if the entity is present, returns false otherwise.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="hasEntity" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>702</id>
      <description>Check if link for relation exists.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="hasLink" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>703</id>
      <description>Set a new message entity, including the attached annotations and the media type. It is the callers responsibility to wrap the actual entity with jakarta.ws.rs.core.GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="setEntity" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>704</id>
      <description>Set a new entity output stream. The JAX-RS runtime is responsible for closing the output stream.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="setEntityStream" return-type="void">
        <parameters>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>705</id>
      <description>Set a new response status code.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="setStatus" return-type="void">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>706</id>
      <description>Set the complete status information (status code and reason phrase) associated with the response.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="setStatusInfo" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response.Response.StatusType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>707</id>
      <description>Filter method called after a response has been provided for a request (either by a ContainerRequestFilter request filter or by a matched resource method. Filters in the filter chain are ordered according to their jakarta.annotation.Priority class-level annotation value.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.ContainerRequestContext</parameter>
          <parameter>jakarta.ws.rs.container.ContainerResponseContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>708</id>
      <description>if an I/O exception occurs.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.ContainerRequestContext</parameter>
          <parameter>jakarta.ws.rs.container.ContainerResponseContext</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>710</id>
      <description>Get a resolved instance of a resource or sub-resource class. The resolved resource instance is properly initialized in the context of the current request processing scope. The scope of the resolved resource instance depends on the managing container. For resources managed by JAX-RS container the default scope is per-request.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ResourceContext</class-interface>
      <method name="getResource" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>721</id>
      <description>Get the resource class that is the target of a request, or null if this information is not available.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ResourceInfo</class-interface>
      <method name="getResourceClass" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>722</id>
      <description>Get the resource method that is the target of a request, or null if this information is not available.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ResourceInfo</class-interface>
      <method name="getResourceMethod" return-type="java.lang.reflect.Method" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>725</id>
      <description>Invoked when the suspended asynchronous response is about to time out. Implementing time-out handlers may use the callback method to change the default time-out strategy defined by JAX-RS specification (see jakarta.ws.rs.container.AsyncResponse API documentation). A custom time-out handler may decide to either resume the suspended response using one of its resume(...) methods, cancel the suspended response using one of its cancel(...) methods, or extend the suspend period by AsyncResponse#setTimeout(long, java.util.concurrent.TimeUnit) setting a new suspend time-out In case the time-out handler does not take any of the actions mentioned above, a default time-out strategy is executed by the JAX-RS runtime.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>TimeoutHandler</class-interface>
      <method name="handleTimeout" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.AsyncResponse</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>726</id>
      <description>Initialize the backing store in the abstract parent multivalued map implementation.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="AbstractMultivaluedMap" return-type="AbstractMultivaluedMap">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>727</id>
      <description>Add a value to the current list of values for the supplied key. NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="add" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>728</id>
      <description>Add multiple values to the current list of values for the supplied key. If the supplied array of new values is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null. NOTE: This implementation ignores null values; Any of the supplied values of null is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="addAll" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>729</id>
      <description>Add all the values from the supplied value list to the current list of values for the supplied key. If the supplied value list is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null. NOTE: This implementation ignores null values; Any null value in the supplied value list is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="addAll" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>730</id>
      <description>Add a value to the first position in the current list of values for the supplied key. NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the purged value list. Overriding implementations may modify this behavior by redefining the #addFirstNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="addFirst" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>731</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="clear" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>732</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="containsKey" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>733</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="containsValue" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>734</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="entrySet" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>736</id>
      <description>Compare the specified map with this map for equality modulo the order of values for each key. Specifically, the values associated with each key are compared as if they were ordered lists.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="equalsIgnoreValueOrder" return-type="boolean">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>737</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="get" return-type="java.util.List">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>738</id>
      <description>A shortcut to get the first value of the supplied key.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="getFirst" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>740</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="isEmpty" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>741</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="keySet" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>742</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="put" return-type="java.util.List">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>743</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="putAll" return-type="void">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>744</id>
      <description>Set the value for the key to be a one item list consisting of the supplied value. Any existing values will be replaced. NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the purged value list. As a result of such operation, empty value list would be registered for the supplied key. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="putSingle" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>745</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="remove" return-type="java.util.List">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>746</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="size" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>747</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>748</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="values" return-type="java.util.Collection" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>754</id>
      <description>Register a class of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. Implementations SHOULD warn about and ignore registrations that do not conform to the requirements of supported JAX-RS component types in the given configurable context. Any subsequent registration attempts for a component type, for which a class or instance-based registration already exists in the system MUST be rejected by the JAX-RS implementation and a warning SHOULD be raised to inform the user about the rejected registration. The registered JAX-RS component class is registered as a contract provider of all the recognized JAX-RS or implementation-specific extension contracts including meta-provider contracts, such as Feature or jakarta.ws.rs.container.DynamicFeature. As opposed to component instances registered via #register(Object) method, the lifecycle of components registered using this class-based register(...) method is fully managed by the JAX-RS implementation or any underlying IoC container supported by the implementation.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>755</id>
      <description>Register a class of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides the same functionality as #register(Class) except that any priority specified on the registered JAX-RS component class via jakarta.annotation.Priority annotation is overridden with the supplied priority value. Note that in case the priority is not applicable to a particular provider contract implemented by the class of the registered component, the supplied priority value will be ignored for that contract.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>756</id>
      <description>Register a class of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides the same functionality as #register(Class) except the JAX-RS component class is only registered as a provider of the listed extension provider or meta-provider contracts. All explicitly enumerated contract types must represent a class or an interface implemented or extended by the registered component. Contracts that are not Class#isAssignableFrom(Class) assignable from the registered component class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>759</id>
      <description>Register an instance of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides the same functionality as #register(Object) except that any priority specified on the registered JAX-RS component class via jakarta.annotation.Priority annotation is overridden with the supplied priority value. Note that in case the priority is not applicable to a particular provider contract implemented by the class of the registered component, the supplied priority value will be ignored for that contract.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>760</id>
      <description>Register an instance of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides the same functionality as #register(Object) except the JAX-RS component class is only registered as a provider of the listed extension provider or meta-provider contracts. All explicitly enumerated contract types must represent a class or an interface implemented or extended by the registered component. Contracts that are not Class#isAssignableFrom(Class) assignable from the registered component class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>765</id>
      <description>Returns multivalued map representation of the form.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Form</class-interface>
      <method name="asMap" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>766</id>
      <description>Create a new form data instance. The underlying form parameter store is configured to preserve the insertion order of the parameters. I.e. parameters can be iterated in the same order as they were inserted into the Form.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Form</class-interface>
      <method name="Form" return-type="Form" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>767</id>
      <description>Create a new form data instance with a single parameter entry. The underlying form parameter store is configured to preserve the insertion order of the parameters. I.e. parameters can be iterated in the same order as they were inserted into the Form.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Form</class-interface>
      <method name="Form" return-type="Form">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>768</id>
      <description>Create a new form data instance and register a custom underlying parameter store. This method is useful in situations when a custom parameter store is needed in order to change the default parameter iteration order, improve performance or facilitate other custom requirements placed on the parameter store.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Form</class-interface>
      <method name="Form" return-type="Form">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>769</id>
      <description>Adds a new value to the specified form parameter.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Form</class-interface>
      <method name="param" return-type="jakarta.ws.rs.core.Form">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>770</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericEntity</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>771</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericEntity</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>772</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericEntity</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>773</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>774</id>
      <description>Constructs a new generic type, supplying the generic type information and deriving the class.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="GenericType" return-type="GenericType">
        <parameters>
          <parameter>java.lang.reflect.Type</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>775</id>
      <description>Returns the object representing the class or interface that declared the type represented by this generic type instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="getRawType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>776</id>
      <description>Retrieve the type represented by the generic type instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="getType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>777</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>778</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>779</id>
      <description>Get message date.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getDate" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>781</id>
      <description>Get Content-Length value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getLength" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>783</id>
      <description>Create a new builder instance initialized from another link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromLink" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>788</id>
      <description>Create a new builder instance initialized from an existing URI.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromUri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>790</id>
      <description>Create a new builder instance initialized from an existing URI represented as a string.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromUri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>792</id>
      <description>Returns an immutable map that includes all the link parameters defined on this link. If defined, this map will include entries for rel, title and type.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="getParams" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>793</id>
      <description>Returns the value associated with the link rel param, or null if this param is not specified.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="getRel" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>794</id>
      <description>Returns the value associated with the link title param, or null if this param is not specified.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="getTitle" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>795</id>
      <description>Returns the value associated with the link type param, or null if this param is not specified.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="getType" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>796</id>
      <description>Returns the underlying URI associated with this link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="getUri" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>797</id>
      <description>Convenience method that returns a jakarta.ws.rs.core.UriBuilder initialized with this link's underlying URI.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="getUriBuilder" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>799</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="Link" return-type="Link" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>800</id>
      <description>Returns a string representation as a link header (RFC 5988). All link params are serialized as link-param="value" where value is a quoted-string. For example, ; title="employee"; rel="manager friend"</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>804</id>
      <description>Finish building this link using the supplied values as URI parameters. The state of the builder is unaffected; this method may be called multiple times on the same builder instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>807</id>
      <description>Set an arbitrary parameter on this link. Note that link parameters are those defined in RFC 5988 and should not be confused with URI parameters which can be specified when calling #build(Object...).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="param" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>809</id>
      <description>Convenience method to set a link relation. More than one rel value can be specified by using one or more whitespace characters as delimiters according to RFC 5988. The effect of calling this method is cumulative; relations are appended using a single space character as separator.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="rel" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>810</id>
      <description>Convenience method to set a title on this link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="title" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>811</id>
      <description>Convenience method to set a type on this link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="type" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>812</id>
      <description>Set underlying URI template for the link being constructed.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="uri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>813</id>
      <description>Set underlying string representing URI template for the link being constructed.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="uri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>826</id>
      <description>Create a new MediaType instance with the same type, subtype and parameters copied from the original instance and the supplied parameter. RAMETER parameter.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="withCharset" return-type="jakarta.ws.rs.core.MediaType">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>827</id>
      <description>Constructs an empty multivalued hash map with the default initial capacity (16) and the default load factor (0.75).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedHashMap</class-interface>
      <method name="MultivaluedHashMap" return-type="MultivaluedHashMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>828</id>
      <description>Constructs an empty multivalued hash map with the specified initial capacity and the default load factor (0.75).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedHashMap</class-interface>
      <method name="MultivaluedHashMap" return-type="MultivaluedHashMap">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>829</id>
      <description>Constructs an empty multivalued hash map with the specified initial capacity and load factor.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedHashMap</class-interface>
      <method name="MultivaluedHashMap" return-type="MultivaluedHashMap">
        <parameters>
          <parameter>int</parameter>
          <parameter>float</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>830</id>
      <description>Constructs a new multivalued hash map with the same mappings as the specified MultivaluedMap . The List instances holding the values of each key are created anew instead of being reused.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedHashMap</class-interface>
      <method name="MultivaluedHashMap" return-type="MultivaluedHashMap">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>831</id>
      <description>Constructs a new multivalued hash map with the same mappings as the specified single-valued Map .</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedHashMap</class-interface>
      <method name="MultivaluedHashMap" return-type="MultivaluedHashMap">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>832</id>
      <description>Add multiple values to the current list of values for the supplied key. If the supplied array of new values is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedMap</class-interface>
      <method name="addAll" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>833</id>
      <description>Add all the values from the supplied value list to the current list of values for the supplied key. If the supplied value list is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedMap</class-interface>
      <method name="addAll" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>834</id>
      <description>Add a value to the first position in the current list of values for the supplied key.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedMap</class-interface>
      <method name="addFirst" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>835</id>
      <description>Compare the specified map with this map for equality modulo the order of values for each key. Specifically, the values associated with each key are compared as if they were ordered lists.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MultivaluedMap</class-interface>
      <method name="equalsIgnoreValueOrder" return-type="boolean">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>836</id>
      <description>Create a new ResponseBuilder with an ACCEPTED status.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="accepted" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>837</id>
      <description>Create a new ResponseBuilder with an ACCEPTED status that contains a representation. It is the callers responsibility to wrap the actual entity with GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="accepted" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>838</id>
      <description>Buffer the message entity data. In case the message entity is backed by an unconsumed entity input stream, all the bytes of the original entity input stream are read and stored in a local buffer. The original entity input stream is consumed and automatically closed as part of the operation and the method returns true. In case the response entity instance is not backed by an unconsumed input stream an invocation of bufferEntity method is ignored and the method returns false. This operation is idempotent, i.e. it can be invoked multiple times with the same effect which also means that calling the bufferEntity() method on an already buffered (and thus closed) message instance is legal and has no further effect. Also, the result returned by the bufferEntity() method is consistent across all invocations of the method on the same Response instance. Buffering the message entity data allows for multiple invocations of readEntity(...) methods on the response instance. Note however, that once the response instance itself is #close() closed, the implementations are expected to release the buffered message entity data too. Therefore any subsequent attempts to read a message entity stream on such closed response will result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="bufferEntity" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>841</id>
      <description>Close the underlying message entity input stream (if available and open) as well as releases any other resources associated with the response (e.g. #bufferEntity() buffered message entity data). This operation is idempotent, i.e. it can be invoked multiple times with the same effect which also means that calling the close() method on an already closed message instance is legal and has no further effect. The close() method should be invoked on all instances that contain an un-consumed entity input stream to ensure the resources associated with the instance are properly cleaned-up and prevent potential memory leaks. This is typical for client-side scenarios where application layer code processes only the response headers and ignores the response entity. Any attempts to manipulate (read, get, buffer) a message entity on a closed response will result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>843</id>
      <description>Get the allowed HTTP methods from the Allow HTTP header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getAllowedMethods" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>844</id>
      <description>Get any new cookies set on the response message.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getCookies" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>845</id>
      <description>Get message date.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getDate" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>847</id>
      <description>Get the entity tag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getEntityTag" return-type="jakarta.ws.rs.core.EntityTag" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>848</id>
      <description>Get view of the response headers and their object values. The underlying header data may be subsequently modified by the JAX-RS runtime on the server side. Changes in the underlying header data are reflected in this view. On the server-side, when the message is sent, the non-string values will be serialized using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the class of the value or using the values toString method if a header delegate is not available. On the client side, the returned map is identical to the one returned by #getStringHeaders().</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>849</id>
      <description>Get a message header as a single string value. Each single header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>850</id>
      <description>Get the language of the message entity.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getLanguage" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>851</id>
      <description>Get the last modified date.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getLastModified" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>852</id>
      <description>Get Content-Length value.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getLength" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>853</id>
      <description>Get the link for the relation. A relative link is resolved with respect to the actual request URI that produced this response. Note that request URIs may be updated by filters, so the actual request URI may differ from that in the original invocation.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getLink" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>854</id>
      <description>Convenience method that returns a Link.Builder for the relation. See #getLink for more information.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getLinkBuilder" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>855</id>
      <description>Get the links attached to the message as headers. Any links in the message that are relative must be resolved with respect to the actual request URI that produced this response. Note that request URIs may be updated by filters, so the actual request URI may differ from that in the original invocation.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getLinks" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>856</id>
      <description>Get the location.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getLocation" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>857</id>
      <description>Get the media type of the message entity.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>858</id>
      <description>Get the complete status information associated with the response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getStatusInfo" return-type="jakarta.ws.rs.core.Response.Response.StatusType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>859</id>
      <description>Get view of the response headers and their string values. The underlying header data may be subsequently modified by the JAX-RS runtime on the server side. Changes in the underlying header data are reflected in this view.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="getStringHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>860</id>
      <description>Check if there is an entity available in the response. The method returns true if the entity is present, returns false otherwise. Note that the method may return true also for response messages with a zero-length content, in case the and headers are specified in the message. In such case, an attempt to read the entity using one of the readEntity(...) methods will return a corresponding instance representing a zero-length entity for a given Java type or produce a ProcessingException in case no such instance is available for the Java type.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="hasEntity" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>862</id>
      <description>Check if link for relation exists.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="hasLink" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>863</id>
      <description>Read the message entity input stream as an instance of specified Java type using a jakarta.ws.rs.ext.MessageBodyReader that supports mapping the message entity stream onto the requested type. Method throws an ProcessingException if the content of the message cannot be mapped to an entity of the requested type and IllegalStateException in case the entity is not backed by an input stream or if the original entity input stream has already been consumed without #bufferEntity() buffering the entity data prior consuming. A message instance returned from this method will be cached for subsequent retrievals via #getEntity(). Unless the supplied entity type is an java.io.InputStream input stream, this method automatically #close() closes the an unconsumed original response entity data stream if open. In case the entity data has been buffered, the buffer will be reset prior consuming the buffered data to enable subsequent invocations of readEntity(...) methods on this response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="readEntity" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>866</id>
      <description>Read the message entity input stream as an instance of specified Java type using a jakarta.ws.rs.ext.MessageBodyReader that supports mapping the message entity stream onto the requested type. Method throws an ProcessingException if the content of the message cannot be mapped to an entity of the requested type and IllegalStateException in case the entity is not backed by an input stream or if the original entity input stream has already been consumed without #bufferEntity() buffering the entity data prior consuming. A message instance returned from this method will be cached for subsequent retrievals via #getEntity(). Unless the supplied entity type is an java.io.InputStream input stream, this method automatically #close() closes the an unconsumed original response entity data stream if open. In case the entity data has been buffered, the buffer will be reset prior consuming the buffered data to enable subsequent invocations of readEntity(...) methods on this response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="readEntity" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>869</id>
      <description>Read the message entity input stream as an instance of specified Java type using a jakarta.ws.rs.ext.MessageBodyReader that supports mapping the message entity stream onto the requested type. Method throws an ProcessingException if the content of the message cannot be mapped to an entity of the requested type and IllegalStateException in case the entity is not backed by an input stream or if the original entity input stream has already been consumed without #bufferEntity() buffering the entity data prior consuming. A message instance returned from this method will be cached for subsequent retrievals via #getEntity(). Unless the supplied entity type is an java.io.InputStream input stream, this method automatically #close() closes the an unconsumed original response entity data stream if open. In case the entity data has been buffered, the buffer will be reset prior consuming the buffered data to enable subsequent invocations of readEntity(...) methods on this response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="readEntity" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>872</id>
      <description>Read the message entity input stream as an instance of specified Java type using a jakarta.ws.rs.ext.MessageBodyReader that supports mapping the message entity stream onto the requested type. Method throws an ProcessingException if the content of the message cannot be mapped to an entity of the requested type and IllegalStateException in case the entity is not backed by an input stream or if the original entity input stream has already been consumed without #bufferEntity() buffering the entity data prior consuming. A message instance returned from this method will be cached for subsequent retrievals via #getEntity(). Unless the supplied entity type is an java.io.InputStream input stream, this method automatically #close() closes the an unconsumed original response entity data stream if open. In case the entity data has been buffered, the buffer will be reset prior consuming the buffered data to enable subsequent invocations of readEntity(...) methods on this response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="readEntity" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>875</id>
      <description>Set the list of allowed methods for the resource. Any duplicate method names will be truncated to a single entry.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="allow" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>876</id>
      <description>Set the list of allowed methods for the resource.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="allow" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.util.Set</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>878</id>
      <description>Set the message entity content encoding.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="encoding" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>879</id>
      <description>Set the response entity in the builder. Any Java type instance for a response entity, that is supported by the runtime can be passed. It is the callers responsibility to wrap the actual entity with GenericEntity if preservation of its generic type is required. Note that the entity can be also set as an java.io.InputStream input stream. A specific entity media type can be set using one of the type(...) methods.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="entity" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>880</id>
      <description>Add a link header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="link" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.net.URI</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>881</id>
      <description>Add a link header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="link" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>882</id>
      <description>Add one or more link headers.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="links" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>883</id>
      <description>Replaces all existing headers with the newly supplied headers.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="replaceAll" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>884</id>
      <description>Add a Vary header that lists the available variants.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="variants" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Variant[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>885</id>
      <description>Get the response status family for the status code.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.Status.Family</class-interface>
      <method name="familyOf" return-type="jakarta.ws.rs.core.Response.Status.Response.Status.Family">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>886</id>
      <description>Build a URI, using the supplied values in order to replace any URI template parameters. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All '%' characters in the stringified values will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance. All instances of the same template parameter will be replaced by the same value that corresponds to the position of the first instance of the template parameter. e.g. the template "{a}/{b}/{a}" with values {"x", "y", "z"} will result in the the URI "x/y/x", not "x/y/z". The encodeSlashInPath parameter may be used to override the default encoding of '/' characters in the stringified template values in cases when the template is part of the URI path component when using the #build(Object[]) method. If the encodeSlashInPath parameter is set to true (default), the slash ('/') characters in parameter values will be encoded if the template is placed in the URI path component. If set to false the default encoding behavior is overridden an slash characters in template values will not be encoded when used to substitute path templates.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="build" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>887</id>
      <description>if there are any URI template parameters without a supplied value, or if a value is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="build" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
          <parameter>boolean</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>888</id>
      <description>if a URI cannot be constructed based on the current state of the builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="build" return-type="java.net.URI">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
          <parameter>boolean</parameter>
        </parameters>
        <throw>jakarta.ws.rs.core.UriBuilderException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>889</id>
      <description>Build a URI. Any URI template parameters will be replaced by the value in the supplied map. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All '%' characters in the stringified values will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance. The encodeSlashInPath parameter may be used to override the default encoding of '/' characters in the stringified template values in cases when the template is part of the URI path component when using the #buildFromMap(java.util.Map) method. If the encodeSlashInPath parameter is set to true (default), the slash ('/') characters in parameter values will be encoded if the template is placed in the URI path component. If set to false the default encoding behavior is overridden an slash characters in template values will not be encoded when used to substitute path templates.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromMap" return-type="java.net.URI">
        <parameters>
          <parameter>java.util.Map</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>890</id>
      <description>if there are any URI template parameters without a supplied value, or if a template parameter value is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromMap" return-type="java.net.URI">
        <parameters>
          <parameter>java.util.Map</parameter>
          <parameter>boolean</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>891</id>
      <description>if a URI cannot be constructed based on the current state of the builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="buildFromMap" return-type="java.net.URI">
        <parameters>
          <parameter>java.util.Map</parameter>
          <parameter>boolean</parameter>
        </parameters>
        <throw>jakarta.ws.rs.core.UriBuilderException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>892</id>
      <description>Create a new instance initialized from a Link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fromLink" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>894</id>
      <description>Create a new instance representing a relative URI initialized from a jakarta.ws.rs.Path-annotated method. This method can only be used in cases where there is a single method with the specified name that is annotated with jakarta.ws.rs.Path.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="fromMethod" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>896</id>
      <description>Get the URI template string represented by this URI builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="toTemplate" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>897</id>
      <description>Parses the uriTemplate string and copies the parsed components of the supplied URI to the UriBuilder replacing any existing values for those components.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="uri" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>899</id>
      <description>Get the string representation of the variant language, or null if no language has been set.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="getLanguageString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>900</id>
      <description>Create a new instance of Variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="Variant" return-type="Variant">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>901</id>
      <description>Create a new instance of Variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="Variant" return-type="Variant">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>902</id>
      <description>Create a new instance of Variant.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Variant</class-interface>
      <method name="Variant" return-type="Variant">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>903</id>
      <description>Get an array of the annotations formally declared on the artifact that initiated the intercepted entity provider invocation. E.g. if the message body is to be converted into a method parameter, this will be the annotations on that parameter returned by java.lang.reflect.Method#getParameterAnnotations Method.getParameterAnnotations(); if the server-side response entity instance is to be converted into an output stream, this will be the annotations on the matched resource method returned by java.lang.reflect.Method#getAnnotations() Method.getAnnotations(). This method may return an empty array in case the interceptor is not invoked in a context of any particular resource method (e.g. as part of the client API), but will never return null.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="getAnnotations" return-type="java.lang.annotation.Annotation[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>904</id>
      <description>Get the type of the object to be produced or written.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="getGenericType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>905</id>
      <description>Get media type of HTTP entity.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>906</id>
      <description>Returns the property with the given name registered in the current request/response exchange context, or null if there is no property by that name. A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface. A list of supported properties can be retrieved using #getPropertyNames(). Custom property names should follow the same convention as package names. In a Servlet container, on the server side, the properties are backed by the ServletRequest and contain all the attributes available in the ServletRequest.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="getProperty" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>908</id>
      <description>Get Java type supported by corresponding message body provider.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="getType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>909</id>
      <description>Removes a property with the given name from the current request/response exchange context. After removal, subsequent calls to #getProperty to retrieve the property value will return null. In a Servlet container, on the server side, the properties are backed by the ServletRequest and contain all the attributes available in the ServletRequest.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="removeProperty" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>910</id>
      <description>Update annotations on the formal declaration of the artifact that initiated the intercepted entity provider invocation. Calling this method has no effect in the client API.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="setAnnotations" return-type="void">
        <parameters>
          <parameter>java.lang.annotation.Annotation[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>911</id>
      <description>Update type of the object to be produced or written.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="setGenericType" return-type="void">
        <parameters>
          <parameter>java.lang.reflect.Type</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>912</id>
      <description>Update media type of HTTP entity.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="setMediaType" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>913</id>
      <description>Binds an object to a given property name in the current request/response exchange context. If the name specified is already used for a property, this method will replace the value of the property with the new value. A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface. A list of supported properties can be retrieved using #getPropertyNames(). Custom property names should follow the same convention as package names. If a null value is passed, the effect is the same as calling the #removeProperty(String) method. In a Servlet container, on the server side, the properties are backed by the ServletRequest and contain all the attributes available in the ServletRequest.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="setProperty" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>914</id>
      <description>Update Java type before calling message body provider.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="setType" return-type="void">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>915</id>
      <description>Parse the supplied value and create an instance of T.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ParamConverter</class-interface>
      <method name="fromString" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="false" impl-spec="false" status="active" testable="true">
      <id>917</id>
      <description>Convert the supplied value to a String. This method is reserved for future use. Proprietary JAX-RS extensions may leverage the method. Users should be aware that any such support for the method comes at the expense of producing non-portable code.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ParamConverter</class-interface>
      <method name="toString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>919</id>
      <description>Obtain a ParamConverter that can provide from/to string conversion for an instance of a particular Java type.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ParamConverterProvider</class-interface>
      <method name="getConverter" return-type="jakarta.ws.rs.ext.ParamConverter">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>920</id>
      <description>Interceptor method wrapping calls to MessageBodyReader#readFrom method. The parameters of the wrapped method called are available from context. Implementations of this method SHOULD explicitly call ReaderInterceptorContext#proceed to invoke the next interceptor in the chain, and ultimately the wrapped MessageBodyReader#readFrom method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptor</class-interface>
      <method name="aroundReadFrom" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.ext.ReaderInterceptorContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>921</id>
      <description>if an IO error arises or is thrown by the wrapped MessageBodyReader.readFrom method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptor</class-interface>
      <method name="aroundReadFrom" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.ext.ReaderInterceptorContext</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>922</id>
      <description>thrown by the wrapped MessageBodyReader.readFrom method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptor</class-interface>
      <method name="aroundReadFrom" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.ext.ReaderInterceptorContext</parameter>
        </parameters>
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>923</id>
      <description>Get mutable map of HTTP headers. Note that while the headers are mutable, a ReaderInterceptor reader interceptor should typically roll-back any header modifications once the call to #proceed() context.proceed() returns, to avoid externally visible side-effects of the interceptor invocation.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptorContext</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>924</id>
      <description>Get the input stream of the object to be read. The JAX-RS runtime is responsible for closing the input stream.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptorContext</class-interface>
      <method name="getInputStream" return-type="java.io.InputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>925</id>
      <description>Proceed to the next interceptor in the chain. Return the result of the next interceptor invoked. Interceptors MUST explicitly call this method to continue the execution chain; the call to this method in the last interceptor of the chain will invoke the wrapped jakarta.ws.rs.ext.MessageBodyReader#readFrom.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptorContext</class-interface>
      <method name="proceed" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>926</id>
      <description>if an IO error arises or is thrown by the wrapped MessageBodyReader.readFrom method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptorContext</class-interface>
      <method name="proceed" return-type="java.lang.Object">
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>927</id>
      <description>Set the input stream of the object to be read. For example, by wrapping it with another input stream. The JAX-RS runtime is responsible for closing the input stream that is set.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptorContext</class-interface>
      <method name="setInputStream" return-type="void">
        <parameters>
          <parameter>java.io.InputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>928</id>
      <description>if type is null.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createHeaderDelegate" return-type="jakarta.ws.rs.ext.RuntimeDelegate.RuntimeDelegate.HeaderDelegate">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>930</id>
      <description>Interceptor method wrapping calls to MessageBodyWriter#writeTo method. The parameters of the wrapped method called are available from context. Implementations of this method SHOULD explicitly call WriterInterceptorContext#proceed to invoke the next interceptor in the chain, and ultimately the wrapped MessageBodyWriter.writeTo method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptor</class-interface>
      <method name="aroundWriteTo" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.ext.WriterInterceptorContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>931</id>
      <description>if an IO error arises or is thrown by the wrapped MessageBodyWriter.writeTo method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptor</class-interface>
      <method name="aroundWriteTo" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.ext.WriterInterceptorContext</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>932</id>
      <description>thrown by the wrapped MessageBodyWriter.writeTo method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptor</class-interface>
      <method name="aroundWriteTo" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.ext.WriterInterceptorContext</parameter>
        </parameters>
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>933</id>
      <description>Get object to be written as HTTP entity.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="getEntity" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>934</id>
      <description>Get mutable map of HTTP headers.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>935</id>
      <description>Get the output stream for the object to be written. The JAX-RS runtime is responsible for closing the output stream.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="getOutputStream" return-type="java.io.OutputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>936</id>
      <description>Proceed to the next interceptor in the chain. Interceptors MUST explicitly call this method to continue the execution chain; the call to this method in the last interceptor of the chain will invoke the wrapped jakarta.ws.rs.ext.MessageBodyWriter#writeTo method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="proceed" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>937</id>
      <description>if an IO error arises or is thrown by the wrapped MessageBodyWriter.writeTo method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="proceed" return-type="void">
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>938</id>
      <description>Update object to be written as HTTP entity.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="setEntity" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>939</id>
      <description>Set a new output stream for the object to be written. For example, by wrapping it with another output stream. The JAX-RS runtime is responsible for closing the output stream that is set.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="setOutputStream" return-type="void">
        <parameters>
          <parameter>java.io.OutputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>940</id>
      <description>Create a new WebTarget instance by resolving a URI template with a given name in the URI of the current target instance using a supplied value. In case a null template name or value is entered a NullPointerException is thrown. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="resolveTemplate" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>942</id>
      <description>Create a new WebTarget instance by resolving a URI template with a given name in the URI of the current target instance using a supplied value. In case a null template name or value is entered a NullPointerException is thrown. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="resolveTemplate" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>944</id>
      <description>Create a new WebTarget instance by resolving a URI template with a given name in the URI of the current target instance using a supplied encoded value. A template with a matching name will be replaced by the supplied value. Value is converted to String using its toString() method and is then encoded to match the rules of the URI component to which they pertain. All % characters in the stringified values that are not followed by two hexadecimal numbers will be encoded. In case a null template name or value is entered a NullPointerException is thrown. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="resolveTemplateFromEncoded" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>946</id>
      <description>Create a new WebTarget instance by resolving one or more URI templates in the URI of the current target instance using supplied name-value pairs. A call to the method with an empty parameter map is ignored, i.e. same WebTarget instance is returned. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="resolveTemplates" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>948</id>
      <description>Create a new WebTarget instance by resolving one or more URI templates in the URI of the current target instance using supplied name-value pairs. A call to the method with an empty parameter map is ignored, i.e. same WebTarget instance is returned. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="resolveTemplates" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.util.Map</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>950</id>
      <description>Create a new WebTarget instance by resolving one or more URI templates in the URI of the current target instance using supplied name-encoded value pairs. All templates with their name matching one of the keys in the supplied map will be replaced by the value in the supplied map. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All % characters in the stringified values that are not followed by two hexadecimal numbers will be encoded. A call to the method with an empty parameter map is ignored, i.e. same WebTarget instance is returned. A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the newly constructed (child) target instance.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>WebTarget</class-interface>
      <method name="resolveTemplatesFromEncoded" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>955</id>
      <description>Initialize the resource or sub-resource instance. All JAX-RS injectable fields in the resource instance will be properly initialized in the context of the current request processing scope.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ResourceContext</class-interface>
      <method name="initResource" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>956</id>
      <description>Returns the value associated with the link rel param as a list of strings or the empty list if rel is not defined.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="getRels" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>957</id>
      <description>Resolve a URI template with a given name in this UriBuilder instance using a supplied value. In case a null template name or value is entered a IllegalArgumentException is thrown.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="resolveTemplate" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>959</id>
      <description>Resolve a URI template with a given name in this UriBuilder instance using a supplied value. In case a null template name or value is entered a IllegalArgumentException is thrown.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="resolveTemplate" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>961</id>
      <description>Resolve a URI template with a given name in this UriBuilder instance using a supplied encoded value. A template with a matching name will be replaced by the supplied value. Value is converted to String using its toString() method and is then encoded to match the rules of the URI component to which they pertain. All % characters in the stringified values that are not followed by two hexadecimal numbers will be encoded. In case a null template name or encoded value is entered a IllegalArgumentException is thrown.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="resolveTemplateFromEncoded" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>963</id>
      <description>Resolve one or more URI templates in this UriBuilder instance using supplied name-value pairs. A call to the method with an empty parameter map is ignored.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="resolveTemplates" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>965</id>
      <description>Resolve one or more URI templates in this UriBuilder instance using supplied name-value pairs. A call to the method with an empty parameter map is ignored.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="resolveTemplates" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.util.Map</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>966</id>
      <description>if the name-value map or any of the names or values in the map is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="resolveTemplates" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.util.Map</parameter>
          <parameter>boolean</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>967</id>
      <description>Resolve one or more URI templates in this UriBuilder instance using supplied name-value pairs. All templates with their name matching one of the keys in the supplied map will be replaced by the value in the supplied map. Values are converted to String using their toString() method and are then encoded to match the rules of the URI component to which they pertain. All % characters in the stringified values that are not followed by two hexadecimal numbers will be encoded. A call to the method with an empty parameter map is ignored.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="resolveTemplatesFromEncoded" return-type="jakarta.ws.rs.core.UriBuilder">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>969</id>
      <description>Define the RuntimeType constraint type to be placed on a JAX-RS provider.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ConstrainedTo</class-interface>
      <method name="value" return-type="jakarta.ws.rs.RuntimeType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>970</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>971</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>972</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>973</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>974</id>
      <description />
      <package>jakarta.ws.rs</package>
      <class-interface>RuntimeType</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.RuntimeType">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>975</id>
      <description />
      <package>jakarta.ws.rs</package>
      <class-interface>RuntimeType</class-interface>
      <method name="values" return-type="jakarta.ws.rs.RuntimeType[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>977</id>
      <description>Get the immutable configuration of the request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getConfiguration" return-type="jakarta.ws.rs.core.Configuration" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>978</id>
      <description>Returns an immutable Collection collection containing the property names available within the context of the current request/response exchange context. Use the #getProperty method with a property name to get the value of a property.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getPropertyNames" return-type="java.util.Collection" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>979</id>
      <description>Called when the invocation has failed for any reason. Note that the provided Throwable may be a jakarta.ws.rs.ProcessingException in case the invocation processing failure has been caused by a client-side runtime component error. The Throwable may also be a jakarta.ws.rs.WebApplicationException or one of its subclasses in case the response status code is not jakarta.ws.rs.core.Response.Status.Family#SUCCESSFUL successful and the generic callback type is not jakarta.ws.rs.core.Response. In case a processing of a properly received response fails, the wrapped processing exception will be of ResponseProcessingException type and will contain the jakarta.ws.rs.core.Response instance whose processing has failed. A java.util.concurrent.CancellationException would be indicate that the invocation has been cancelled. An InterruptedException would indicate that the thread executing the invocation has been interrupted. Once this invocation callback method returns, the underlying jakarta.ws.rs.core.Response instance will be automatically closed by the runtime.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>InvocationCallback</class-interface>
      <method name="failed" return-type="void">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>980</id>
      <description>Cancel the suspended request processing. When a request processing is cancelled using this method, the JAX-RS implementation MUST indicate to the client that the request processing has been cancelled by sending back a jakarta.ws.rs.core.Response.Status#SERVICE_UNAVAILABLE HTTP 503 (Service unavailable) error response. Invoking a cancel(...) method multiple times to cancel request processing has the same effect as canceling the request processing only once. Invoking a cancel(...) method on an asynchronous response instance that has already been cancelled or resumed has no effect and the method call is ignored while returning true, in case the request has been cancelled previously. Otherwise, in case the request has been resumed regularly (using a resume(...) method) or resumed due to a time-out, method returns false.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="cancel" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>981</id>
      <description>Cancel the suspended request processing. When a request processing is cancelled using this method, the JAX-RS implementation MUST indicate to the client that the request processing has been cancelled by sending back a jakarta.ws.rs.core.Response.Status#SERVICE_UNAVAILABLE HTTP 503 (Service unavailable) error response with a Retry-After header set to the value provided by the method parameter. Invoking a cancel(...) method multiple times to cancel request processing has the same effect as canceling the request processing only once. Invoking a cancel(...) method on an asynchronous response instance that has already been cancelled or resumed has no effect and the method call is ignored while returning true, in case the request has been cancelled previously. Otherwise, in case the request has been resumed regularly (using a resume(...) method) or resumed due to a time-out, method returns false.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="cancel" return-type="boolean">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>982</id>
      <description>Cancel the suspended request processing. When a request processing is cancelled using this method, the JAX-RS implementation MUST indicate to the client that the request processing has been cancelled by sending back a jakarta.ws.rs.core.Response.Status#SERVICE_UNAVAILABLE HTTP 503 (Service unavailable) error response with a Retry-After header set to the value provided by the method parameter. Invoking a cancel(...) method multiple times to cancel request processing has the same effect as canceling the request processing only once. Invoking a cancel(...) method on an asynchronous response instance that has already been cancelled or resumed has no effect and the method call is ignored while returning true, in case the request has been cancelled previously. Otherwise, in case the request has been resumed regularly (using a resume(...) method) or resumed due to a time-out, method returns false.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="cancel" return-type="boolean">
        <parameters>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>983</id>
      <description>Resume the suspended request processing using the provided response data. The provided response data can be of any Java type that can be returned from a jakarta.ws.rs.HttpMethod JAX-RS resource method. The asynchronous response must be still in a #isSuspended() suspended state for this method to succeed. By executing this method, the request is guaranteed to complete either successfully or with an error. The data processing by the JAX-RS runtime follows the same path as it would for the response data returned synchronously by a JAX-RS resource, except that unmapped exceptions are not re-thrown by JAX-RS runtime to be handled by a hosting I/O container. Instead, any unmapped exceptions are propagated to the hosting I/O container via a container-specific callback mechanism. Depending on the container implementation, propagated unmapped exceptions typically result in an error status being sent to the client and/or the connection being closed.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="resume" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>984</id>
      <description>Resume the suspended request processing using the provided throwable. For the provided throwable same rules apply as for an exception thrown by a jakarta.ws.rs.HttpMethod JAX-RS resource method. By executing this method, the request is guaranteed to complete either successfully or with an error. The throwable processing by the JAX-RS runtime follows the same path as it would for the response data returned synchronously by a JAX-RS resource, except that unmapped exceptions are not re-thrown by JAX-RS runtime to be handled by a hosting I/O container. Instead, any unmapped exceptions are propagated to the hosting I/O container via a container-specific callback mechanism. Depending on the container implementation, propagated unmapped exceptions typically result in an error status being sent to the client and/or the connection being closed.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="resume" return-type="boolean">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>986</id>
      <description>Returns an immutable java.util.Collection collection containing the property names available within the context of the current request/response exchange context. Use the #getProperty method with a property name to get the value of a property. In a Servlet container, the properties are synchronized with the ServletRequest and expose all the attributes available in the ServletRequest. Any modifications of the properties are also reflected in the set of properties of the associated ServletRequest.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="getPropertyNames" return-type="java.util.Collection" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>987</id>
      <description>A callback method called by the JAX-RS runtime during the application deployment to register provider instances or classes in a jakarta.ws.rs.core.Configuration runtime configuration scope of a particular jakarta.ws.rs.HttpMethod resource or sub-resource method; i.e. the providers that should be dynamically bound to the method. The registered provider instances or classes are expected to be implementing one or more of the following interfaces: ContainerRequestFilterContainerResponseFilterReaderInterceptorWriterInterceptorjakarta.ws.rs.core.Feature A provider instance or class that does not implement any of the interfaces above may be ignored by the JAX-RS implementation. In such case a java.util.logging.Level#WARNING warning message must be logged. JAX-RS implementations may support additional provider contracts that can be registered using a dynamic feature concept. Conceptually, this callback method is called during a jakarta.ws.rs.HttpMethod resource or sub-resource method discovery phase (typically once per each discovered resource or sub-resource method) to register provider instances or classes in a configuration scope of each particular method identified by the supplied ResourceInfo resource information. The responsibility of the feature is to properly update the supplied configuration context.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>DynamicFeature</class-interface>
      <method name="configure" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.ResourceInfo</parameter>
          <parameter>jakarta.ws.rs.core.FeatureContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>988</id>
      <description>Get a live view of an internal configuration state of this configurable instance. Any changes made using methods of this Configurable instance will be reflected in the returned Configuration instance. The returned Configuration instance and the collection data it provides are not thread-safe wrt. modification made using methods on the parent configurable object.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="getConfiguration" return-type="jakarta.ws.rs.core.Configuration" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>989</id>
      <description>Register a class of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides same functionality as #register(Class, Class[]) except that any priority specified on the registered JAX-RS component class via jakarta.annotation.Priority annotation is overridden for each extension provider contract type separately with an integer priority value specified as a value in the supplied map of [contract type, priority] pairs. Note that in case a priority is not applicable to a provider contract registered for the JAX-RS component, the supplied priority value is ignored for such contract.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>990</id>
      <description>Register an instance of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides same functionality as #register(Object, Class[]) except that any priority specified on the registered JAX-RS component class via jakarta.annotation.Priority annotation is overridden for each extension provider contract type separately with an integer priority value specified as a value in the supplied map of [contract type, priority] pairs. Note that in case a priority is not applicable to a provider contract registered for the JAX-RS component, the supplied priority value is ignored for such contract.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>993</id>
      <description>Get the extension contract registration information for a component of a given class. For component classes that are not configured in this configuration context the method returns an empty Map. Method does not return null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getContracts" return-type="java.util.Map">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>995</id>
      <description>Get the immutable bag of configuration properties.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getProperties" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>996</id>
      <description>Get the value for the property with a given name.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getProperty" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>997</id>
      <description>Returns an immutable java.util.Collection collection containing the property names available within the context of the current configuration instance. Use the #getProperty method with a property name to get the value of a property.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getPropertyNames" return-type="java.util.Collection" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>998</id>
      <description>Get the runtime type of this configuration context.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getRuntimeType" return-type="jakarta.ws.rs.RuntimeType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>999</id>
      <description>Check if a particular Feature feature instance has been previously enabled in the runtime configuration context. Method returns true only in case an instance equal to the feature instance is already present among the features previously successfully enabled in the configuration context.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="isEnabled" return-type="boolean">
        <parameters>
          <parameter>jakarta.ws.rs.core.Feature</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1000</id>
      <description>Check if a Feature feature instance of featureClass class has been previously enabled in the runtime configuration context. Method returns true in case any instance of the featureClass class is already present among the features previously successfully enabled in the configuration context.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="isEnabled" return-type="boolean">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1001</id>
      <description>Check if a particular JAX-RS component instance (such as providers or Feature features) has been previously registered in the runtime configuration context. Method returns true only in case an instance equal to the component instance is already present among the components previously registered in the configuration context.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="isRegistered" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1002</id>
      <description>Check if a JAX-RS component of the supplied componentClass class has been previously registered in the runtime configuration context. Method returns true in case a component of the supplied componentClass class is already present among the previously registered component classes or instances in the configuration context.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="isRegistered" return-type="boolean">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1003</id>
      <description>A call-back method called when the feature is to be enabled in a given runtime configuration scope. The responsibility of the feature is to properly update the supplied runtime configuration context and return true if the feature was successfully enabled or false otherwise. Note that under some circumstances the feature may decide not to enable itself, which is indicated by returning false. In such case the configuration context does not add the feature to the collection of enabled features and a subsequent call to Configuration#isEnabled(Feature) or Configuration#isEnabled(Class) method would return false.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Feature</class-interface>
      <method name="configure" return-type="boolean">
        <parameters>
          <parameter>jakarta.ws.rs.core.FeatureContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1005</id>
      <description>Create a new builder instance initialized from a URI builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromUriBuilder" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.UriBuilder</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1006</id>
      <description>Set underlying URI builder representing the URI template for the link being constructed.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="uriBuilder" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.UriBuilder</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1007</id>
      <description>Returns an immutable java.util.Collection collection containing the property names available within the context of the current request/response exchange context. Use the #getProperty method with a property name to get the value of a property. In a Servlet container, the properties are synchronized with the ServletRequest and expose all the attributes available in the ServletRequest. Any modifications of the properties are also reflected in the set of properties of the associated ServletRequest.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="getPropertyNames" return-type="java.util.Collection" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1008</id>
      <description>thrown by the wrapped MessageBodyReader.readFrom method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>ReaderInterceptorContext</class-interface>
      <method name="proceed" return-type="java.lang.Object">
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1009</id>
      <description>thrown by the wrapped MessageBodyWriter.writeTo method.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>WriterInterceptorContext</class-interface>
      <method name="proceed" return-type="void">
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1010</id>
      <description>Constructs a new JAX-RS runtime processing exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause). This constructor is useful for runtime exceptions that are little more than wrappers for other throwables.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ProcessingException</class-interface>
      <method name="ProcessingException" return-type="ProcessingException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1011</id>
      <description>Constructs a new JAX-RS runtime processing exception with the specified detail message and cause. Note that the detail message associated with cause is not automatically incorporated in this runtime exception's detail message.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ProcessingException</class-interface>
      <method name="ProcessingException" return-type="ProcessingException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1012</id>
      <description>Constructs a new JAX-RS runtime processing exception with the specified detail message. The cause is not initialized, and may subsequently be initialized by a call to #initCause.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ProcessingException</class-interface>
      <method name="ProcessingException" return-type="ProcessingException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1013</id>
      <description>Get the SSL context configured to be used with the current client run-time.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="getSslContext" return-type="javax.net.ssl.SSLContext" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1014</id>
      <description>Build a new client instance using all the configuration previously specified in this client builder.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.client.Client" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1015</id>
      <description>Set the hostname verifier to be used by the client to verify the endpoint's hostname against its identification information.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="hostnameVerifier" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>javax.net.ssl.HostnameVerifier</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1016</id>
      <description>Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys. Setting a key store instance resets any #sslContext(javax.net.ssl.SSLContext) SSL context instance value previously specified. Note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="keyStore" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.security.KeyStore</parameter>
          <parameter>char[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1017</id>
      <description>Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys. Setting a key store instance resets any #sslContext(javax.net.ssl.SSLContext) SSL context instance value previously specified. Note that for improved security of working with password data and avoid storing passwords in Java string objects, the #keyStore(java.security.KeyStore, char[]) version of the method can be utilized. Also note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="keyStore" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.security.KeyStore</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1018</id>
      <description>Create a new ClientBuilder instance using the default client builder implementation class provided by the JAX-RS implementation provider.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="newBuilder" return-type="jakarta.ws.rs.client.ClientBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1019</id>
      <description>Create a new Client instance using the default client builder implementation class provided by the JAX-RS implementation provider.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="newClient" return-type="jakarta.ws.rs.client.Client" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1020</id>
      <description>Create a new custom-configured Client instance using the default client builder implementation class provided by the JAX-RS implementation provider.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="newClient" return-type="jakarta.ws.rs.client.Client">
        <parameters>
          <parameter>jakarta.ws.rs.core.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1021</id>
      <description>Set the SSL context that will be used when creating secured transport connections to server endpoints from WebTarget web targets created by the client instance that is using this SSL context. The SSL context is expected to have all the security infrastructure initialized, including the key and trust managers. Setting a SSL context instance resets any #keyStore(java.security.KeyStore, char[]) key store or #trustStore(java.security.KeyStore) trust store values previously specified.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="sslContext" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>javax.net.ssl.SSLContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1022</id>
      <description>Set the client-side trust store. Trust store is expected to contain certificates from other parties the client is you expect to communicate with, or from Certificate Authorities that are trusted to identify other parties. Setting a trust store instance resets any #sslContext(javax.net.ssl.SSLContext) SSL context instance value previously specified. In case a custom trust store or custom SSL context is not specified, the trust management will be configured to use the default Java runtime settings.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="trustStore" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.security.KeyStore</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1023</id>
      <description>Add the accepted response media types.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="accept" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1024</id>
      <description>Add the accepted response media types.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="accept" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1025</id>
      <description>Add acceptable encodings.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="acceptEncoding" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1026</id>
      <description>Get the HTTP response for which the processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="getResponse" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1027</id>
      <description>Constructs a new JAX-RS runtime response processing exception for a specific Response response with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause). This constructor is useful for runtime exceptions that are little more than wrappers for other throwables.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="ResponseProcessingException" return-type="ResponseProcessingException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1028</id>
      <description>Constructs a new JAX-RS runtime response processing exception with the specified detail message and cause. Note that the detail message associated with cause is not automatically incorporated in this runtime exception's detail message.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="ResponseProcessingException" return-type="ResponseProcessingException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1029</id>
      <description>Constructs a new JAX-RS runtime processing exception with the specified detail message. The cause is not initialized, and may subsequently be initialized by a call to #initCause.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="ResponseProcessingException" return-type="ResponseProcessingException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1030</id>
      <description>Register an asynchronous processing lifecycle callback class to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Collection">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1031</id>
      <description>Register asynchronous processing lifecycle callback classes to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Map">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1032</id>
      <description>Register an asynchronous processing lifecycle callback instance to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Collection">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1033</id>
      <description>Register an asynchronous processing lifecycle callback instances to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Map">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1034</id>
      <description>Set/update the suspend timeout. The new suspend timeout values override any timeout value previously specified. The asynchronous response must be still in a #isSuspended() suspended state for this method to succeed.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="setTimeout" return-type="boolean">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1035</id>
      <description>Get a map of custom application-wide properties. The returned properties are reflected in the application Configuration configuration passed to the server-side features or injected into server-side JAX-RS components. The set of returned properties may be further extended or customized at deployment time using container-specific features and deployment descriptors. For example, in a Servlet-based deployment scenario, web application's and Servlet values may be used to extend or override values of the properties programmatically returned by this method. The default implementation returns an empty set.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Application</class-interface>
      <method name="getProperties" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1036</id>
      <description>Set the new configuration property, if already set, the existing value of the property will be updated. Setting a null value into a property effectively removes the property from the property bag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="property" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1038</id>
      <description>Convenience method to build a link from a path. Equivalent to fromUriBuilder(UriBuilder.fromPath(path)).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromPath" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1042</id>
      <description>Initialize builder using another link. Sets underlying URI and copies all parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="link" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1044</id>
      <description>Get the cookie expiry date. Cookies whose expiry date has passed are discarded. A cookie can be unset by setting a new cookie with an expiry date in the past, typically the lowest possible date that can be set. Note that it is recommended to use #getMaxAge() Max-Age to control cookie expiration, however some browsers do not understand Max-Age, in which case setting Expires parameter may be necessary.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="getExpiry" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1045</id>
      <description>Returns true if this cookie contains the HttpOnly attribute. This means that the cookie should not be accessible to scripting engines, like javascript.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="isHttpOnly" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1049</id>
      <description>Relativize a URI with respect to the current request URI. Relativization works as follows: If the URI to relativize is already relative, it is first resolved using #resolve(java.net.URI). The resulting URI is relativized with respect to the current request URI. If the two URIs do not share a prefix, the URI computed in step 1 is returned. Examples (for base URI http://example.com:8080/app/root/): Request URI: http://example.com:8080/app/root/a/b/c/resource.html Supplied URI: a/b/c/d/file.txt Returned URI: d/file.txt Request URI: http://example.com:8080/app/root/a/b/c/resource.html Supplied URI: http://example2.com:9090/app2/root2/a/d/file.txt Returned URI: http://example2.com:9090/app2/root2/a/d/file.txt In the second example, the supplied URI is returned given that it is absolute and there is no common prefix between it and the request URI.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="relativize" return-type="java.net.URI">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1051</id>
      <description>Resolve a relative URI with respect to the base URI of the application. The resolved URI returned by this method is normalized. If the supplied URI is already resolved, it is just returned.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="resolve" return-type="java.net.URI">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1053</id>
      <description>Create a new instance of a jakarta.ws.rs.core.Link.Builder.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createLinkBuilder" return-type="jakarta.ws.rs.core.Link.Link.Builder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1054</id>
      <description>Finish building this link using the supplied values as URI parameters and relativize the result with respect to the supplied URI. If the underlying link is already relative or if it is absolute but does not share a prefix with the supplied URI, this method is equivalent to calling Link.Builder#build(java.lang.Object[]). Note that a base URI can be set on a relative link using Link.Builder#baseUri(java.net.URI). The state of the builder is unaffected; this method may be called multiple times on the same builder instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="buildRelativized" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>java.net.URI</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1056</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1057</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1058</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1059</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1060</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1061</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1062</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1063</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1064</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1065</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1066</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1067</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1068</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1069</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1070</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1071</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1072</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1073</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1074</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1075</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1076</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1077</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1078</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1079</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1080</id>
      <description>Construct a new method not allowed exception. Note that this constructor does not validate the presence of HTTP Allow header. I.e. it is possible to use the constructor to create a client-side exception instance even for an invalid HTTP 405 response content returned from a server.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1081</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1082</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1083</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1084</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1085</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1086</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1087</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1088</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1089</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1090</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1091</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1092</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1093</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1094</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1095</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1096</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1097</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1098</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1099</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1100</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1101</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1102</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1103</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1104</id>
      <description>Construct a new "service unavailable" exception without any "Retry-After" information specified for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1105</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Long</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1106</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1107</id>
      <description>Construct a new "service unavailable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1108</id>
      <description>Construct a new "service unavailable" exception with a date specifying the "Retry-After" information for the failed request and an underlying request failure cause.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.Date</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1109</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request and an underlying request failure cause.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Long</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1110</id>
      <description>Construct a new "service unavailable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1111</id>
      <description>Construct a new instance with the supplied message and a default HTTP status code of 500.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1112</id>
      <description>Construct a new instance using the supplied message and response.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1113</id>
      <description>Construct a new instance with a supplied message and HTTP status code.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1114</id>
      <description>Construct a new instance with the supplied message and HTTP status.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1115</id>
      <description>Construct a new instance with the supplied message, root cause and default HTTP status code of 500.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1116</id>
      <description>Construct a new instance with the supplied message, root cause and response.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1117</id>
      <description>Construct a new instance with the supplied message, root cause and HTTP status code.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1118</id>
      <description>Construct a new instance with a the supplied message, root cause and HTTP status code.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1119</id>
      <description>Get the hostname verifier configured in the client or null in case no hostname verifier has been configured.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="getHostnameVerifier" return-type="javax.net.ssl.HostnameVerifier" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1120</id>
      <description>Set the internal configuration state to an externally provided configuration state.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="withConfig" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1121</id>
      <description>Set a new message entity. The existing entity #getEntityAnnotations() annotations and #getMediaType() media type are preserved. It is the callers responsibility to wrap the actual entity with jakarta.ws.rs.core.GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="setEntity" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1122</id>
      <description>Set a new property in the context of a request represented by this invocation. The property is available for a later retrieval via ClientRequestContext#getProperty(String) or jakarta.ws.rs.ext.InterceptorContext#getProperty(String). If a property with a given name is already set in the request context, the existing value of the property will be updated. Setting a null value into a property effectively removes the property from the request property bag.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="property" return-type="jakarta.ws.rs.client.Invocation">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1123</id>
      <description>Set a new property in the context of a request represented by this invocation builder. The property is available for a later retrieval via ClientRequestContext#getProperty(String) or jakarta.ws.rs.ext.InterceptorContext#getProperty(String). If a property with a given name is already set in the request context, the existing value of the property will be updated. Setting a null value into a property effectively removes the property from the request property bag.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="property" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1124</id>
      <description>Set a new message entity. The existing entity #getEntityAnnotations() annotations and #getMediaType() media type are preserved. It is the callers responsibility to wrap the actual entity with jakarta.ws.rs.core.GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="setEntity" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1125</id>
      <description>Set the base URI for resolution of relative URIs. If the underlying URI is already absolute, the base URI is ignored.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="baseUri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1126</id>
      <description>Set the base URI as a string for resolution of relative URIs. If the underlying URI is already absolute, the base URI is ignored.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="baseUri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1127</id>
      <description>Construct a new NoContentException instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NoContentException</class-interface>
      <method name="NoContentException" return-type="NoContentException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1128</id>
      <description>Construct a new NoContentException instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NoContentException</class-interface>
      <method name="NoContentException" return-type="NoContentException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1129</id>
      <description>Construct a new NoContentException instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NoContentException</class-interface>
      <method name="NoContentException" return-type="NoContentException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1130</id>
      <description>Set the connect timeout. Value 0 represents infinity. Negative values are not allowed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="connectTimeout" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1132</id>
      <description>Set the read timeout. The value is the timeout to read a response. If the server doesn't respond within the defined timeframe, ProcessingException is thrown with TimeoutException as a cause. Value 0 represents infinity. Negative values are not allowed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="readTimeout" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1134</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1135</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1136</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1137</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1138</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1139</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1140</id>
      <description>Invoke HTTP HEAD method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="head" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1141</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1142</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1143</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1144</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1145</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1146</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1147</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1148</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1149</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1150</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1151</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1152</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1153</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1154</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1155</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1156</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1157</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1158</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1159</id>
      <description />
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1160</id>
      <description />
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1161</id>
      <description />
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1162</id>
      <description>Access the default reactive invoker based on java.util.concurrent.CompletionStage.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="rx" return-type="jakarta.ws.rs.client.CompletionStageRxInvoker" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1163</id>
      <description>Access a reactive invoker based on a RxInvoker subclass provider. Note that corresponding RxInvokerProvider must be registered in the client runtime. This method is an extension point for JAX-RS implementations to support other types representing asynchronous computations.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="rx" return-type="jakarta.ws.rs.client.RxInvoker">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1164</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1165</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1166</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1167</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="get" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1168</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="get" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1169</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="get" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1170</id>
      <description>Invoke HTTP HEAD method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="head" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1171</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1172</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1173</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1174</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1175</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1176</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1177</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="options" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1178</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="options" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1179</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="options" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1180</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1181</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1182</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1183</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1184</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1185</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1186</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1187</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1188</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1189</id>
      <description>Get RxInvoker implementation instance. The returned instance has to be thread safe.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvokerProvider</class-interface>
      <method name="getRxInvoker" return-type="jakarta.ws.rs.client.RxInvoker">
        <parameters>
          <parameter>jakarta.ws.rs.client.SyncInvoker</parameter>
          <parameter>java.util.concurrent.ExecutorService</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1190</id>
      <description>Determine if this is a provider for the given RxInvoker subclass.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvokerProvider</class-interface>
      <method name="isProviderFor" return-type="boolean">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1191</id>
      <description>Create a jakarta.ws.rs.core.GenericType generic type from a Java instance. If the supplied instance is a jakarta.ws.rs.core.GenericEntity, the generic type will be computed using the jakarta.ws.rs.core.GenericEntity#getType(). Otherwise instance.getClass() will be used.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="forInstance" return-type="jakarta.ws.rs.core.GenericType">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1194</id>
      <description>Create a new ResponseBuilder with the supplied status and reason phrase.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>int</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1195</id>
      <description>Set the status on the ResponseBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>int</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1196</id>
      <description>Get the this Status Type as a Status. Please note that returned status contains only a status code, the reason phrase is set to default one (corresponding to the status code).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.StatusType</class-interface>
      <method name="toEnum" return-type="jakarta.ws.rs.core.Response.Response.Status" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1197</id>
      <description>Check if the event is empty (i.e. does not contain any data).</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="isEmpty" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1198</id>
      <description>Get the original event data as String.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1199</id>
      <description>Read event data as a given Java type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1200</id>
      <description>Read event data as a given generic type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1201</id>
      <description>Read event data as a given Java type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1202</id>
      <description>Read event data as a given generic type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1203</id>
      <description>Get event data. The event data, if specified, are serialized and sent as one or more SSE event "data" fields (depending on the line breaks in the actual serialized data content). The data are serialized using an available jakarta.ws.rs.ext.MessageBodyWriter that is selected based on the event #getType() type, #getGenericType() generic type} and #getMediaType() media type}.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getData" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1204</id>
      <description>Get generic data type. This information is used to select a proper jakarta.ws.rs.ext.MessageBodyWriter to be used for serializing the #getData() event data.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getGenericType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1205</id>
      <description>Get MediaType media type of the event data. This information is used to a select proper jakarta.ws.rs.ext.MessageBodyWriter to be used for serializing the #getData() event data.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1206</id>
      <description>Get data type. This information is used to select a proper jakarta.ws.rs.ext.MessageBodyWriter to be used for serializing the #getData() event data.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1207</id>
      <description>Build OutboundSseEvent. There are two valid configurations: if a Builder#comment(String) comment is set, all other parameters are optional. If event Builder#data(Class, Object) data and Builder#mediaType(MediaType) media type is set, event data will be serialized after the comment. if a Builder#comment(String) comment is not set, at least the event Builder#data(Class, Object) data must be set. All other parameters are optional.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.sse.OutboundSseEvent" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1208</id>
      <description>Set comment string associated with the event. The comment will be serialized with the event, before event data are serialized. If the event does not contain any data, a separate "event" that contains only the comment will be sent. This information is optional, provided the event data are set. Note that multiple invocations of this method result in a previous comment being replaced with a new one. To achieve multi-line comments, a multi-line comment string has to be used.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="comment" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1209</id>
      <description>Set event data and java type of event data. Type information will be used for jakarta.ws.rs.ext.MessageBodyWriter lookup. Note that multiple invocations of this method result in previous even data being replaced with new one.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="data" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1210</id>
      <description>Set event data and a generic java type of event data. Type information will be used for jakarta.ws.rs.ext.MessageBodyWriter lookup. Note that multiple invocations of this method result in previous even data being replaced with new one.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="data" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1211</id>
      <description>Set event data and java type of event data. This is a convenience method that derives the event data type information from the runtime type of the event data. The supplied event data may be represented as jakarta.ws.rs.core.GenericEntity. Note that multiple invocations of this method result in previous even data being replaced with new one.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="data" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1212</id>
      <description>Set the event id. Will be send as a value of the SSE "id" field. This field is optional.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="id" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1213</id>
      <description>Set the MediaType media type of the event data. This information is mandatory. The default value is MediaType#TEXT_PLAIN.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="mediaType" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1214</id>
      <description>Set event name. Will be send as a value of the SSE "event" field. This field is optional.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="name" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1215</id>
      <description>Set reconnection delay (in milliseconds) that indicates how long the event receiver should wait before attempting to reconnect in case a connection to SSE event source is lost. Will be send as a value of the SSE "retry" field. This field is optional. Absence of a value of this field in an OutboundSseEvent instance is indicated by SseEvent#RECONNECT_NOT_SET value returned from #getReconnectDelay().</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="reconnectDelay" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>long</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1216</id>
      <description>Get a new Server-sent event broadcaster.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newBroadcaster" return-type="jakarta.ws.rs.sse.SseBroadcaster" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1217</id>
      <description>Create new OutboundSseEvent from provided data. The data can be string only and must not be null.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newEvent" return-type="jakarta.ws.rs.sse.OutboundSseEvent">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1218</id>
      <description>Create new OutboundSseEvent from provided data and name.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newEvent" return-type="jakarta.ws.rs.sse.OutboundSseEvent">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1219</id>
      <description>Get a new outbound event builder.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newEventBuilder" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1220</id>
      <description>Publish an SSE event to all registered SseEventSink instances.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="broadcast" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.sse.OutboundSseEvent</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1224</id>
      <description>Register provided SseEventSink instance to this SseBroadcaster.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="register" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.sse.SseEventSink</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1225</id>
      <description>Get a comment string that accompanies the event. Contains value of the comment associated with SSE event. This field is optional. Method may return null, if the event comment is not specified.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getComment" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1226</id>
      <description>Get event identifier. Contains value of SSE "id" field. This field is optional. Method may return null, if the event identifier is not specified.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getId" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1227</id>
      <description>Get event name. Contains value of SSE "event" field. This field is optional. Method may return null, if the event name is not specified.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getName" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1228</id>
      <description>Get new connection retry time in milliseconds the event receiver should wait before attempting to reconnect after a connection to the SSE event source is lost. Contains value of SSE "retry" field. This field is optional. Method returns #RECONNECT_NOT_SET if no value has been set.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getReconnectDelay" return-type="long" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1229</id>
      <description>Check if the connection retry time has been set in the event.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="isReconnectDelaySet" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1230</id>
      <description>Close the SseEventSink instance and release all associated resources. Subsequent calls have no effect and are ignored. Once the SseEventSink is closed, invoking any method other than this one and #isClosed() would result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSink</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1231</id>
      <description>Check if the stream has been closed already. Please note that the client connection represented by this SseServerSink can be closed by the client side when a client decides to close connection and disconnect from the server.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSink</class-interface>
      <method name="isClosed" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1232</id>
      <description>Send an outbound Server-sent event to this sink. Event will be serialized and sent to the client.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSink</class-interface>
      <method name="send" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.sse.OutboundSseEvent</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1233</id>
      <description>Close this event source. The method will wait up to 5 seconds for the internal event processing tasks to complete.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1234</id>
      <description>Close this event source and wait for the internal event processing task to complete for up to the specified amount of wait time. The method blocks until the event processing task has completed execution after a shutdown request, or until the timeout occurs, or the current thread is interrupted, whichever happens first. In case the waiting for the event processing task has been interrupted, this method restores the Thread#interrupted() interrupt flag on the thread before returning false.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="close" return-type="boolean">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1235</id>
      <description>Check if this event source instance has already been #open() opened.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="isOpen" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1236</id>
      <description>Open the connection to the supplied SSE underlying WebTarget web target and start processing incoming InboundSseEvent events.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="open" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1237</id>
      <description>Register a InboundSseEvent consumer. Given consumer is invoked once per each received event.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="register" return-type="void">
        <parameters>
          <parameter>java.util.function.Consumer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1238</id>
      <description>Register InboundSseEvent and Throwable consumers. Event consumer is invoked once per each received event, Throwable consumer is invoked invoked upon a unrecoverable error encountered by a SseEventSource.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="register" return-type="void">
        <parameters>
          <parameter>java.util.function.Consumer</parameter>
          <parameter>java.util.function.Consumer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1240</id>
      <description>Create a new SseEventSource.Builder event source builder that provides convenient way how to configure and fine-tune various aspects of a newly prepared event source instance.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="target" return-type="jakarta.ws.rs.sse.SseEventSource.SseEventSource.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.client.WebTarget</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1241</id>
      <description>Build new SSE event source pointing at a SSE streaming WebTarget web target. The returned event source is ready, but not SseEventSource#open() connected to the SSE endpoint. It is expected that you will manually invoke its #open() method once you are ready to start receiving SSE events. In case you want to build an event source instance that is already connected to the SSE endpoint, use the event source builder #open() method instead. Once the event source is open, the incoming events are processed by the event source in an asynchronous task that runs in an internal single-threaded ScheduledExecutorService scheduled executor service.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.sse.SseEventSource" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1242</id>
      <description>Set the initial reconnect delay to be used by the event source. Note that this value may be later overridden by the SSE endpoint using either a retry SSE event field or HTTP 503 + mechanism as described in the SseEventSource javadoc.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource.Builder</class-interface>
      <method name="reconnectingEvery" return-type="jakarta.ws.rs.sse.SseEventSource.SseEventSource.Builder">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>46</id>
      <description>Convert the cache control to a string suitable for use as the value of the corresponding HTTP header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>47</id>
      <description>Creates a new instance of CacheControl by parsing the supplied string.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>CacheControl</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.CacheControl">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>49</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="Cookie" return-type="Cookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>50</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="Cookie" return-type="Cookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>51</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="Cookie" return-type="Cookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>59</id>
      <description>Convert the cookie to a string suitable for use as the value of the corresponding HTTP header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>60</id>
      <description>Creates a new instance of Cookie by parsing the supplied string.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.Cookie">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>68</id>
      <description>Convert the entity tag to a string suitable for use as the value of the corresponding HTTP header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>69</id>
      <description>Creates a new instance of EntityTag by parsing the supplied string.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityTag</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.EntityTag">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>104</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>105</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>106</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>107</id>
      <description>Create a new instance copying the information in the supplied cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>jakarta.ws.rs.core.Cookie</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>108</id>
      <description>Create a new instance supplementing the information in the supplied cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>jakarta.ws.rs.core.Cookie</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>110</id>
      <description>Convert the cookie to a string suitable for use as the value of the corresponding HTTP header.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>111</id>
      <description>Creates a new instance of NewCookie by parsing the supplied string.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.NewCookie">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>1046</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>boolean</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>1047</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.util.Date</parameter>
          <parameter>boolean</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>1048</id>
      <description>Create a new instance supplementing the information in the supplied cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>jakarta.ws.rs.core.Cookie</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.util.Date</parameter>
          <parameter>boolean</parameter>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1</id>
      <description>A list of media types. Each entry may specify a single type or consist of a comma separated list of types, with any leading or trailing white-spaces in a single type entry being ignored. For example: { "image/jpeg, image/gif ", " image/png" } Use of the comma-separated form allows definition of a common string constant for use on multiple targets.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>Consumes</class-interface>
      <method name="value" return-type="java.lang.String[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>10</id>
      <description>A list of media types. Each entry may specify a single type or consist of a comma separated list of types, with any leading or trailing white-spaces in a single type entry being ignored. For example: { "image/jpeg, image/gif ", " image/png" } Use of the comma-separated form allows definition of a common string constant for use on multiple targets.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>Produces</class-interface>
      <method name="value" return-type="java.lang.String[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>80</id>
      <description>Get the values of a HTTP request header if the header exists on the current request. The returned value will be a read-only List if the specified header exists or null if it does not. This is a shortcut for getRequestHeaders().get(name).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getRequestHeader" return-type="java.util.List">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>87</id>
      <description>Check if this media type is compatible with another media type. Two media types are considered to be compatible if and only if their types are equal, or one of them has a wildcard type, and their subtypes are equal or one of them has a wildcard subtype. Media type parameters are ignored. The function is commutative.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="isCompatible" return-type="boolean">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>240</id>
      <description>Get a read-only list of the currently matched resource class instances. Each entry is a resource class instance that matched the request URI either directly or via a sub-resource method or a sub-resource locator. Entries are ordered according to reverse request URI matching order, with the current resource first. E.g. given the following resource classes: #064;Path("foo") public class FooResource { #064;GET public String getFoo() {...} #064;Path("bar") public BarResource getBarResource() {...} } public class BarResource { #064;GET public String getBar() {...} } The values returned by this method based on request uri and where the method is called from are: Matched resources from requests Request Called from Value(s) GET /foo FooResource.getFoo FooResource GET /foo/bar FooResource.getBarResource FooResource GET /foo/bar BarResource.getBar BarResource, FooResource In case the method is invoked prior to the request matching (e.g. from a pre-matching filter), the method returns an empty list.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getMatchedResources" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>241</id>
      <description>Get a read-only list of URIs for matched resources. Each entry is a relative URI that matched a resource class, a sub-resource method or a sub-resource locator. All sequences of escaped octets are decoded, equivalent to getMatchedURIs(true). Entries do not include query parameters but do include matrix parameters if present in the request URI. Entries are ordered in reverse request URI matching order, with the current resource URI first. E.g. given the following resource classes: #064;Path("foo") public class FooResource { #064;GET public String getFoo() {...} #064;Path("bar") public BarResource getBarResource() {...} } public class BarResource { #064;GET public String getBar() {...} } The values returned by this method based on request uri and where the method is called from are: Matched URIs from requests Request Called from Value(s) GET /foo FooResource.getFoo foo GET /foo/bar FooResource.getBarResource foo/bar, foo GET /foo/bar BarResource.getBar foo/bar, foo In case the method is invoked prior to the request matching (e.g. from a pre-matching filter), the method returns an empty list.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="getMatchedURIs" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>280</id>
      <description>Get a context resolver for a particular type of context and media type. The set of resolvers is first filtered by comparing the supplied value of mediaType with the value of each resolver's jakarta.ws.rs.Produces, ensuring the generic type of the context resolver is assignable to the supplied value of contextType, and eliminating those that do not match. If only one resolver matches the criteria then it is returned. If more than one resolver matches then the list of matching resolvers is ordered with those with the best matching values of jakarta.ws.rs.Produces (x/y gt; x #47;* gt; * #47;*) sorted first. A proxy is returned that delegates calls to ContextResolver#getContext(java.lang.Class) to each matching context resolver in order and returns the first non-null value it obtains or null if all matching context resolvers return null.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>Providers</class-interface>
      <method name="getContextResolver" return-type="jakarta.ws.rs.ext.ContextResolver">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>282</id>
      <description>Get a message body reader that matches a set of criteria. The set of readers is first filtered by comparing the supplied value of mediaType with the value of each reader's jakarta.ws.rs.Consumes, ensuring the supplied value of type is assignable to the generic type of the reader, and eliminating those that do not match. The list of matching readers is then ordered with those with the best matching values of jakarta.ws.rs.Consumes (x/y gt; x #47;* gt; * #47;*) sorted first. Finally, the MessageBodyReader#isReadable(Class, Type, Annotation[], MediaType) method is called on each reader in order using the supplied criteria and the first reader that returns true is selected and returned.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>Providers</class-interface>
      <method name="getMessageBodyReader" return-type="jakarta.ws.rs.ext.MessageBodyReader">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>283</id>
      <description>Get a message body writer that matches a set of criteria. The set of writers is first filtered by comparing the supplied value of mediaType with the value of each writer's jakarta.ws.rs.Produces, ensuring the supplied value of type is assignable to the generic type of the reader, and eliminating those that do not match. The list of matching writers is then ordered with those with the best matching values of jakarta.ws.rs.Produces (x/y gt; x #47;* gt; * #47;*) sorted first. Finally, the MessageBodyWriter#isWriteable(Class, Type, Annotation[], MediaType) method is called on each writer in order using the supplied criteria and the first writer that returns true is selected and returned.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>Providers</class-interface>
      <method name="getMessageBodyWriter" return-type="jakarta.ws.rs.ext.MessageBodyWriter">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.reflect.Type</parameter>
          <parameter>java.lang.annotation.Annotation[]</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>298</id>
      <description>Evaluate request preconditions for a resource that does not currently exist. The primary use of this method is to support the If-Match: * and If-None-Match: * preconditions. Note that precondition If-None-Match: something will never be considered to have been met, and it is the application's responsibility to enforce any additional method-specific semantics. E.g. a PUT on a resource that does not exist might succeed whereas a GET on a resource that does not exist would likely result in a 404 response. It would be the responsibility of the application to generate the 404 response.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Request</class-interface>
      <method name="evaluatePreconditions" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>358</id>
      <description>Check if the underlying response contains the information on when is it possible to jakarta.ws.rs.core.HttpHeaders#RETRY_AFTER retry the request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="hasRetryAfter" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>479</id>
      <description>Filter method called after a response has been provided for a request (either by a ClientRequestFilter request filter or when the HTTP invocation returns). Filters in the filter chain are ordered according to their jakarta.annotation.Priority class-level annotation value.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseFilter</class-interface>
      <method name="filter" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.client.ClientRequestContext</parameter>
          <parameter>jakarta.ws.rs.client.ClientResponseContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>498</id>
      <description>Create an form entity. .core.MediaType#APPLICATION_FORM_URLENCODED form entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="form" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>jakarta.ws.rs.core.Form</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>499</id>
      <description>Create an form entity. .core.MediaType#APPLICATION_FORM_URLENCODED form entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="form" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>506</id>
      <description>Create a entity. ws.rs.core.MediaType#TEXT_HTML entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="html" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>507</id>
      <description>Create an entity. ws.rs.core.MediaType#APPLICATION_JSON entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="json" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>508</id>
      <description>Create a entity. ws.rs.core.MediaType#TEXT_PLAIN entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="text" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>509</id>
      <description>Create an entity. ws.rs.core.MediaType#APPLICATION_XHTML_XML entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="xhtml" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>510</id>
      <description>Create an entity. ws.rs.core.MediaType#APPLICATION_XML entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="xml" return-type="jakarta.ws.rs.client.Entity">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>683</id>
      <description>Get the annotations attached to the entity instance. Note that the returned annotations array contains only those annotations explicitly attached to entity instance (such as the ones attached using jakarta.ws.rs.core.Response.ResponseBuilder#entity(Object, java.lang.annotation.Annotation[]) method as well as the ones attached to the resource method that has returned the response). The entity instance annotations array does not include annotations declared on the entity implementation class or its ancestors. Note that container response filters invoked earlier in the filter chain may modify the entity annotations value, in which case this getter method would return the last annotations value set by a container response filter invoked earlier in the filter chain. For example: #64;Path("my-resource") public class MyResource { private final Annotations[] extras = ... ; #64;GET #64;Custom public String getAnnotatedMe() { return Response.ok().entity("Annotated me", extras).build(); } ... } The container response context for a response returned from the getMe() method above would contain all the annotations declared on the getAnnotatedMe() method (@GET, @Custom) as well as all the annotations from the extras field, provided this value has not been replaced by any container response filter invoked earlier. Similarly: #64;Custom public class AnnotatedMe { ... } #64;Path("my-resource") public class MyResource { private final Annotations[] extras = ... ; #64;GET public AnnotatedMe getMe() { return Response.ok().entity(new AnnotatedMe(), extras).build(); } ... } Provided that the value has not been replaced by any container response filter invoked earlier, the container response context for a response returned from the getMe() method above would contain all the annotations on the getMe() method (@GET) as well as all the annotations from the extras field. It would however not contain any annotations declared on the AnnotatedMe class.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getEntityAnnotations" return-type="java.lang.annotation.Annotation[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>735</id>
      <description>This implementation delegates the method call to to the the underlying [key, multi-value] store.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>739</id>
      <description>This implementation delegates the method call to to the the underlying [key, multi-value] store.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>801</id>
      <description>Simple parser to convert link header string representations into a link. link ::= ' lt;' uri 'gt;' (';' link-param)* link-param ::= name '=' quoted-string See RFC 5988 for more information.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>825</id>
      <description>Creates a new instance of MediaType with the supplied type, subtype and parameter. AMETER parameter.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>MediaType</class-interface>
      <method name="MediaType" return-type="MediaType">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>985</id>
      <description>An unmapped throwable is propagated to the default exception mapper in case no jakarta.ws.rs.ext.ExceptionMapper exception mapper has been found for a request processing failure. In this case a non-null unmapped throwable instance is passed to the method. Note that the throwable instance represents the actual unmapped exception thrown during the request processing before it has been mapped to the response by the default exception mapper.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>CompletionCallback</class-interface>
      <method name="onComplete" return-type="void">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>992</id>
      <description>Get the immutable set of registered JAX-RS component (such as provider, root resource or Feature feature) classes to be instantiated, injected and utilized in the scope of the configurable instance. In contrast to Application#getClasses() this method returns a complete runtime view and therefore also includes auto-discovered components. For each component type, there can be only a single class-based or instance-based registration present in the configuration context at any given time.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getClasses" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1037</id>
      <description>Convenience method to build a link from a resource. Equivalent to Link.fromUriBuilder( UriBuilder#fromMethod(Class, String) UriBuilder.fromMethod(resource, method)). Note that the link URI passed to the Link.Builder instance returned by this method is relative. Should the link be built as absolute, a Link.Builder#baseUri(URI) base URI has to be specified in the builder prior to building the new link instance. For example, on a server side a UriInfo#getBaseUri() may be typically used to define the base URI of a link created using this method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromMethod" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1039</id>
      <description>Convenience method to build a link from a resource. Equivalent to Link.fromUriBuilder( UriBuilder#fromResource UriBuilder.fromResource(resource)). Note that the link URI passed to the Link.Builder instance returned by this method is relative. Should the link be built as absolute, a Link.Builder#baseUri(URI) base URI has to be specified in the builder prior to building the new link instance. For example, on a server side a UriInfo#getBaseUri() may be typically used to define the base URI of a link created using this method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromResource" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1043</id>
      <description>Initialize builder using another link represented as a string. Uses simple parser to convert string representation into a link. link ::= ' lt;' uri 'gt;' (';' link-param)* link-param ::= name '=' quoted-string See RFC 5988 for more information.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="link" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1131</id>
      <description>Set the client-side ExecutorService. Provided executor service will be used for executing asynchronous tasks. When running in a Jakarta EE container, implementations are required to use the container-managed executor service by default. In Java SE, the default is implementation-specific. In either case, calling this method will override the default.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="executorService" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.util.concurrent.ExecutorService</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1133</id>
      <description>Set the client-side ScheduledExecutorService. Provided executor service will be used for executing scheduled asynchronous tasks. When running in a Jakarta EE container, implementations are required to use the container-managed scheduled executor service by default. In Java SE the default is implementation-specific. In either case, calling this method will override the default.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="scheduledExecutorService" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.util.concurrent.ScheduledExecutorService</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1221</id>
      <description>Close the broadcaster and all registered SseEventSink instances. Any other resources associated with the SseBroadcaster should be released. This method is equivalent to calling close(true). Subsequent calls have no effect and are ignored. Once the SseBroadcaster is closed, invoking any other method on the broadcaster instance would result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1222</id>
      <description>Register a listener, which will be called when this SseBroadcaster closes a given event SseEventSink or tries to write to a given SseEventSink that is already closed (either by client closing the connection or by calling SseEventSink#close() on the server side. This operation is potentially slow, especially if large number of listeners get registered in the broadcaster. The SseBroadcaster implementation is optimized to efficiently handle small amounts of concurrent listener registrations and removals and large amounts of registered listener notifications.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="onClose" return-type="void">
        <parameters>
          <parameter>java.util.function.Consumer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1223</id>
      <description>Register a listener, which will be called when an exception is thrown by a given SseEventSink when this SseBroadcaster tries to write to it or close it. This operation is potentially slow, especially if large number of listeners get registered in the broadcaster. The SseBroadcaster implementation is optimized to efficiently handle small amounts of concurrent listener registrations and removals and large amounts of registered listener notifications.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="onError" return-type="void">
        <parameters>
          <parameter>java.util.function.BiConsumer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1239</id>
      <description>Register InboundSseEvent and Throwable consumers and onComplete callback. Event consumer is invoked once per each received event, Throwable consumer is invoked invoked upon a unrecoverable error encountered by a SseEventSource, onComplete callback is invoked after a successful connection and when there are no further events to be received. Note that the onComplete callback will not be invoked if the onError callback has been invoked.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="register" return-type="void">
        <parameters>
          <parameter>java.util.function.Consumer</parameter>
          <parameter>java.util.function.Consumer</parameter>
          <parameter>java.lang.Runnable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1243</id>
      <description>Starts the provided application using the specified configuration. This method is intended to be used in Java SE environments only. The outcome of invocations in Jakarta EE container environments is undefined.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap</class-interface>
      <method name="start" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.Application</parameter>
          <parameter>jakarta.ws.rs.SeBootstrap.SeBootstrap.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1244</id>
      <description>Starts the provided application using a default configuration. This method is intended to be used in Java SE environments only. The outcome of invocations in Jakarta EE container environments is undefined.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap</class-interface>
      <method name="start" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.Application</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1245</id>
      <description>Starts the provided application using the specified configuration. Creates application instance from class using default constructor. Injection is not supported. This method is intended to be used in Java SE environments only. The outcome of invocations in Jakarta EE container environments is undefined.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap</class-interface>
      <method name="start" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>jakarta.ws.rs.SeBootstrap.SeBootstrap.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1246</id>
      <description>Starts the provided application using a default configuration. Creates application instance from class using default constructor. Injection is not supported. This method is intended to be used in Java SE environments only. The outcome of invocations in Jakarta EE container environments is undefined.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap</class-interface>
      <method name="start" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1247</id>
      <description>Convenience method that returns a built the URI for the application.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="baseUri" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1248</id>
      <description>Returns a UriBuilder that includes the application root path.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="baseUriBuilder" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1249</id>
      <description>Creates a new bootstrap configuration builder instance.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="builder" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1250</id>
      <description>Returns whether the property with the given name is configured, either explicitly or by default.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="hasProperty" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1251</id>
      <description>Convenience method to get the host to be used. Same as if calling #property(String) (String) property(HOST).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="host" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1252</id>
      <description>Convenience method to get the actually used port. Same as if calling #property(String) (int) property(PORT). If the port was not explicitly given, this will return the port chosen implicitly by the JAX-RS implementation.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="port" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1253</id>
      <description>Returns the value of the property with the given name, or null if there is no property of that name.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="property" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1254</id>
      <description>Convenience method to get the protocol to be used. Same as if calling #property(String) (String) property(PROTOCOL).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="protocol" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1255</id>
      <description>Convenience method to get the rootPath to be used. Same as if calling #property(String) (String) property(ROOT_PATH).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="rootPath" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1256</id>
      <description>Convenience method to get the secure socket client authentication policy. Same as if calling #property(String) (SSLClientAuthentication) property(SSL_CLIENT_AUTHENTICATION).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="sslClientAuthentication" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.SSLClientAuthentication" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1257</id>
      <description>Convenience method to get the sslContext to be used. Same as if calling #property(String) (SSLContext) property(SSL_CONTEXT).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration</class-interface>
      <method name="sslContext" return-type="javax.net.ssl.SSLContext" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1258</id>
      <description>Builds a bootstrap configuration instance from the provided property values.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.SeBootstrap.SeBootstrap.Configuration" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1259</id>
      <description>Convenience method for bulk-loading configuration from a property supplier. Implementations ask the passed provider function for the actual values of all their supported properties, before returning from this configuration method. For each single request the implementation provides the name of the property and the expected data type of the value. If no such property exists (i. e. either the name is unknown or misspelled, or the type does not exactly match), the Optional is Optional#empty() empty.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="from" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>java.util.function.BiFunction</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1260</id>
      <description>Optional convenience method to bulk-load external configuration. Implementations are free to support any external configuration mechanics, or none at all. It is completely up to the implementation what set of properties is effectively loaded from the provided external configuration, possibly none at all. If the passed external configuration mechanics is unsupported, this method MUST simply do nothing. Portable applications should not call this method, as the outcome is completely implementation-specific.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="from" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1261</id>
      <description>Convenience method to set the host to be used. Same as if calling #property(String, Object) property(HOST, value).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="host" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1262</id>
      <description>Convenience method to set the port to be used. Same as if calling #property(String, Object) property(PORT, value).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="port" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>java.lang.Integer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1263</id>
      <description>Sets the property name to the provided value. This method does not check the validity, type or syntax of the provided value.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="property" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1264</id>
      <description>Convenience method to set the protocol to be used. Same as if calling #property(String, Object) property(PROTOCOL, value).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="protocol" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1265</id>
      <description>Convenience method to set the rootPath to be used. Same as if calling #property(String, Object) property(ROOT_PATH, value).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="rootPath" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1266</id>
      <description>Convenience method to set SSL client authentication policy. Same as if calling #property(String, Object) property(SSL_CLIENT_AUTHENTICATION, value).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="sslClientAuthentication" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.SSLClientAuthentication</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1267</id>
      <description>Convenience method to set the sslContext to be used. Same as if calling #property(String, Object) property(SSL_CONTEXT, value).</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.Builder</class-interface>
      <method name="sslContext" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder">
        <parameters>
          <parameter>javax.net.ssl.SSLContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1268</id>
      <description />
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.SSLClientAuthentication</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.SSLClientAuthentication">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1269</id>
      <description />
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Configuration.SSLClientAuthentication</class-interface>
      <method name="values" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.SSLClientAuthentication[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1270</id>
      <description>Provides access to the configuration actually used by the implementation used to create this instance. This may, or may not, be the same instance passed to SeBootstrap#start(Application, Configuration), not even an equal instance, as implementations MAY create a new intance and MUST update at least the PORT property with the actually used value. Portable applications should not make any assumptions but always explicitly read the actual values from the configuration returned from this method.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Instance</class-interface>
      <method name="configuration" return-type="jakarta.ws.rs.SeBootstrap.SeBootstrap.Configuration" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1271</id>
      <description>Initiate immediate shutdown of running application instance.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Instance</class-interface>
      <method name="stop" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1272</id>
      <description>Registers a consumer for a StopResult which will be executed in a new thread during the JVM shutdown phase.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Instance</class-interface>
      <method name="stopOnShutdown" return-type="void">
        <parameters>
          <parameter>java.util.function.Consumer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1273</id>
      <description>Provides access to the wrapped native handle of the application instance. Implementations may, or may not, have native handles. Portable applications should not invoke this method, as the outcome is undefined.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Instance</class-interface>
      <method name="unwrap" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1274</id>
      <description>Provides access to the wrapped native shutdown result. Implementations may, or may not, have native shutdown results. Portable applications should not invoke this method, as the outcome is undefined.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>SeBootstrap.Instance.StopResult</class-interface>
      <method name="unwrap" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1275</id>
      <description>Returns true if the property with the given name is registered in the current request/response exchange context, or false if there is no property by that name. Use the #getProperty method with a property name to get the value of a property.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="hasProperty" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1276</id>
      <description>Returns true if the property with the given name is registered in the current request/response exchange context, or false if there is no property by that name. Use the #getProperty method with a property name to get the value of a property.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="hasProperty" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1277</id>
      <description>Check whether the property with a given name is configured.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="hasProperty" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1278</id>
      <description>Build a new Cookie instance using all the configuration previously specified in this builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.AbstractCookieBuilder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.Cookie" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1279</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.AbstractCookieBuilder</class-interface>
      <method name="Cookie.AbstractCookieBuilder" return-type="Cookie.AbstractCookieBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1280</id>
      <description>Set the domain of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.AbstractCookieBuilder</class-interface>
      <method name="domain" return-type="jakarta.ws.rs.core.Cookie.Cookie.AbstractCookieBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1281</id>
      <description>Set the path of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.AbstractCookieBuilder</class-interface>
      <method name="path" return-type="jakarta.ws.rs.core.Cookie.Cookie.AbstractCookieBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1282</id>
      <description>Set the value of the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.AbstractCookieBuilder</class-interface>
      <method name="value" return-type="jakarta.ws.rs.core.Cookie.Cookie.AbstractCookieBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1283</id>
      <description>Set the version of the cookie. Defaults to Cookie#DEFAULT_VERSION</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.AbstractCookieBuilder</class-interface>
      <method name="version" return-type="jakarta.ws.rs.core.Cookie.Cookie.AbstractCookieBuilder">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1284</id>
      <description>Build a new Cookie instance using all the configuration previously specified in this builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.Cookie" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1286</id>
      <description>Returns the input stream for this part. This is the content body of the part and is accessed as a stream to avoid loading potentially large amounts of data into the heap. It is the responsibility of the calling code to close this stream after receiving it.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.io.InputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1287</id>
      <description>Converts the content stream for this part to the specified class and returns it. The implementation must convert the stream by finding a jakarta.ws.rs.ext.MessageBodyReader that handles the specified type as well as the MediaType of the part. If no jakarta.ws.rs.ext.MessageBodyReader can be found to perform the conversion, this method will throw an IllegalArgumentException. The implementation is required to close the content stream when this method is invoked, so it may only be invoked once. Subsequent invocations will result in an IllegalStateException. Likewise this method will throw an IllegalStateException if it is called after calling #getContent or #getContent(GenericType).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1288</id>
      <description>if no jakarta.ws.rs.ext.MessageBodyReader can handle the conversion of this part to the specified type</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1289</id>
      <description>if this method or any of the other getContent methods has already been invoked</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.IllegalStateException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1290</id>
      <description>if the jakarta.ws.rs.ext.MessageBodyReader#readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream) method throws an IOException</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1291</id>
      <description>if the jakarta.ws.rs.ext.MessageBodyReader#readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream) method throws an WebApplicationException</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1292</id>
      <description>Converts the content stream for this part to the specified type and returns it. The implementation must convert the stream by finding a jakarta.ws.rs.ext.MessageBodyReader that handles the specified type as well as the MediaType of the part. If no jakarta.ws.rs.ext.MessageBodyReader can be found to perform the conversion, this method will throw an IllegalArgumentException. The implementation is required to close the content stream when this method is invoked, so it may only be invoked once. Subsequent invocations will result in an IllegalStateException. Likewise this method will throw an IllegalStateException if it is called after calling #getContent or #getContent(Class).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1293</id>
      <description>if no jakarta.ws.rs.ext.MessageBodyReader can handle the conversion of this part to the specified type</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1294</id>
      <description>if this method or any of the other getContent methods has already been invoked</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
        <throw>java.lang.IllegalStateException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1295</id>
      <description>if the jakarta.ws.rs.ext.MessageBodyReader#readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream) method throws an IOException</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1296</id>
      <description>if the jakarta.ws.rs.ext.MessageBodyReader#readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream) method throws an WebApplicationException</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getContent" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1297</id>
      <description>Returns the filename of this part. This will be the "filename" attribute of the Content-Disposition header for this part. A filename is not required in a part, so if a filename is not present it will return Optional.empty().</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getFileName" return-type="java.util.Optional" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1298</id>
      <description>Returns an immutable multivalued map of headers for this specific part.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1299</id>
      <description>Returns the content type of this part, and equivalent to calling MediaType.valueOf(part.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE)).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1300</id>
      <description>Returns the name of this part within the multipart entity. This will be the "name" attribute of the Content-Disposition header for this part.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="getName" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1301</id>
      <description>Creates a new EntityPart.Builder instance that sets the part name and fileName to the passed in partAndFileName value. Logically, this is the same as EntityPart.withName(x).fileName(x).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="withFileName" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1302</id>
      <description>Creates a new EntityPart.Builder instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart</class-interface>
      <method name="withName" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1303</id>
      <description>Builds a new EntityPart instance using the provided property values.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.EntityPart" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1304</id>
      <description>if the content was not specified or no matching jakarta.ws.rs.ext.MessageBodyWriter was found.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.EntityPart">
        <throw>java.lang.IllegalStateException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1305</id>
      <description>if the underlying jakarta.ws.rs.ext.MessageBodyWriter throws an IOException</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.EntityPart">
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1306</id>
      <description>if the underlying jakarta.ws.rs.ext.MessageBodyWriter throws a WebApplicationException</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.EntityPart">
        <throw>jakarta.ws.rs.WebApplicationException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1307</id>
      <description>Sets the content for this part. The content of this builder must be specified before invoking the #build() method. The InputStream will be closed by the implementation code after sending the multipart data. Closing the stream before it is sent could result in unexpected behavior.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.io.InputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1308</id>
      <description>if content is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.io.InputStream</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1309</id>
      <description>Convenience method, equivalent to calling fileName(fileName).content(content).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.io.InputStream</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1310</id>
      <description>if either parameter is null.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.io.InputStream</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1311</id>
      <description>Sets the content for this part. The content of this builder must be specified before invoking the #build() method. If the content is specified using this method, then the #build() method is responsible for finding a registered jakarta.ws.rs.ext.MessageBodyWriter that is capable of writing the object type specified here using the default MediaType or the MediaType specified in the #mediaType(MediaType) or #mediaType(String) methods and using any headers specified via the #header(String, String...) or #headers(MultivaluedMap) methods.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1312</id>
      <description>if content is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1313</id>
      <description>Sets the content for this part. The content of this builder must be specified before invoking the #build() method. If the content is specified using this method, then the #build() method is responsible for finding a registered jakarta.ws.rs.ext.MessageBodyWriter that is capable of writing the object's class type specified here using the default MediaType or the MediaType specified in the #mediaType(MediaType) or #mediaType(String) methods and using any headers specified via the #header(String, String...) or #headers(MultivaluedMap) methods. This is the equivalent of calling content(content, content.getClass()).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1314</id>
      <description>if content is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1315</id>
      <description>Sets the content for this part. The content of this builder must be specified before invoking the #build() method. If the content is specified using this method, then the #build() method is responsible for finding a registered jakarta.ws.rs.ext.MessageBodyWriter that is capable of writing the object type specified here using the default MediaType or the MediaType specified in the #mediaType(MediaType) or #mediaType(String) methods and using any headers specified via the #header(String, String...) or #headers(MultivaluedMap) methods.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1316</id>
      <description>if content is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="content" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1317</id>
      <description>Sets the file name for this part. The file name will be specified as an attribute in the Content-Disposition header of this part. When this method is called, the default media type used for the built part will be "application/octet-stream" if not otherwise specified.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="fileName" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1318</id>
      <description>if fileName is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="fileName" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1319</id>
      <description>Adds a new header or replaces a previously added header and sets the header value(s).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="header" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1320</id>
      <description>if headerName is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="header" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1321</id>
      <description>Adds new headers or replaces previously added headers. The behavior of this method would be the same as if iterating over the entry set and invoking the #header(String, String...) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="headers" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1322</id>
      <description>if newHeaders is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="headers" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1323</id>
      <description>Sets the media type for the EntityPart. This will also set the Content-Type header for this part.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="mediaType" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1324</id>
      <description>if mediaType is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="mediaType" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1325</id>
      <description>Convenience method for setting the media type for the EntityPart. This will also set the Content-Type header for this part. This call is effectively the same as mediaType(MediaType.valueOf(mediaTypeString)).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="mediaType" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1326</id>
      <description>if mediaTypeString cannot be parsed or is null</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>EntityPart.Builder</class-interface>
      <method name="mediaType" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1327</id>
      <description>Returns the value of the SameSite attribute for this cookie or null if the attribute is not set. This attributes controls whether the cookie is sent with cross-origin requests, providing protection against cross-site request forgery.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="getSameSite" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.SameSite" />
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>JAXRS:JAVADOC:1328</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.util.Date</parameter>
          <parameter>boolean</parameter>
          <parameter>boolean</parameter>
          <parameter>jakarta.ws.rs.core.NewCookie.NewCookie.SameSite</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>JAXRS:JAVADOC:1329</id>
      <description>Create a new instance supplementing the information in the supplied cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="NewCookie" return-type="NewCookie">
        <parameters>
          <parameter>jakarta.ws.rs.core.Cookie</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.util.Date</parameter>
          <parameter>boolean</parameter>
          <parameter>boolean</parameter>
          <parameter>jakarta.ws.rs.core.NewCookie.NewCookie.SameSite</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1330</id>
      <description>Build a new NewCookie instance using all the configuration previously specified in this builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.NewCookie" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1331</id>
      <description>Set the comment associated with the cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="comment" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1332</id>
      <description>Set the cookie expiry date. Cookies whose expiry date has passed are discarded. A cookie can be unset by setting a new cookie with an expiry date in the past, typically the lowest possible date that can be set. Note that it is recommended to use #maxAge(int) Max-Age to control cookie expiration, however some browsers do not understand Max-Age, in which case setting Expires parameter may be necessary.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="expiry" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1333</id>
      <description>Whether the cookie will only be visible as part of an HTTP request. Defaults to false.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="httpOnly" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1334</id>
      <description>Set the maximum age of the the cookie in seconds. Cookies older than the maximum age are discarded. A cookie can be unset by sending a new cookie with maximum age of 0 since it will overwrite any existing cookie and then be immediately discarded. The default value of -1 indicates that the cookie will be discarded at the end of the browser/application session.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="maxAge" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1335</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="NewCookie.AbstractNewCookieBuilder" return-type="NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1336</id>
      <description>Create a new instance supplementing the information in the supplied cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="NewCookie.AbstractNewCookieBuilder" return-type="NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Cookie</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1337</id>
      <description>Set the attribute that controls whether the cookie is sent with cross-origin requests, providing protection against cross-site request forgery.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="sameSite" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.NewCookie.NewCookie.SameSite</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1338</id>
      <description>Whether the cookie will only be sent over a secure connection. Defaults to false.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.AbstractNewCookieBuilder</class-interface>
      <method name="secure" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.AbstractNewCookieBuilder">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1339</id>
      <description>Build a new NewCookie instance using all the configuration previously specified in this builder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.core.NewCookie" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1340</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.Builder</class-interface>
      <method name="NewCookie.Builder" return-type="NewCookie.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1341</id>
      <description>Create a new instance supplementing the information in the supplied cookie.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.Builder</class-interface>
      <method name="NewCookie.Builder" return-type="NewCookie.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Cookie</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1342</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.SameSite</class-interface>
      <method name="valueOf" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.SameSite">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1343</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie.SameSite</class-interface>
      <method name="values" return-type="jakarta.ws.rs.core.NewCookie.NewCookie.SameSite[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1344</id>
      <description>Check if the response is closed. The method returns true if the response is closed, returns false otherwise.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="isClosed" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1345</id>
      <description>Creates a new instance of UriBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriBuilder</class-interface>
      <method name="newInstance" return-type="jakarta.ws.rs.core.UriBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1346</id>
      <description>Returns true if the property with the given name is registered in the current request/response exchange context, or false if there is no property by that name. Use the #getProperty method with a property name to get the value of a property.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>InterceptorContext</class-interface>
      <method name="hasProperty" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1347</id>
      <description>Perform startup of the application in Java SE environments. This method is not intended to be invoked by applications. Call SeBootstrap#start(Application, SeBootstrap.Configuration) instead.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="bootstrap" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.Application</parameter>
          <parameter>jakarta.ws.rs.SeBootstrap.SeBootstrap.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1348</id>
      <description>Perform startup of the application in Java SE environments. This method is not intended to be invoked by applications. Call SeBootstrap#start(Class, SeBootstrap.Configuration) instead.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="bootstrap" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>jakarta.ws.rs.SeBootstrap.SeBootstrap.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1349</id>
      <description>Create a new instance of a jakarta.ws.rs.SeBootstrap.Configuration.Builder. This method is not intended to be invoked by applications. Call SeBootstrap.Configuration#builder() instead.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createConfigurationBuilder" return-type="jakarta.ws.rs.SeBootstrap.Configuration.SeBootstrap.Configuration.Builder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1350</id>
      <description>Create a new instance of a jakarta.ws.rs.core.EntityPart.Builder. This method is not intended to be invoked by applications. Call EntityPart#withName(String) instead.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createEntityPartBuilder" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1351</id>
      <description>if partName is null.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createEntityPartBuilder" return-type="jakarta.ws.rs.core.EntityPart.EntityPart.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1352</id>
      <description>Close the broadcaster and release any resources associated with it. The closing of registered SseEventSink is controlled by the cascading parameter. Subsequent calls have no effect and are ignored. Once the SseBroadcaster is closed, invoking any other method on the broadcaster instance would result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="close" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- MODIFIED ASSERTIONS LISTED BELOW -->
    <!-- The original assertion is followed by the modified version -->
    <!-- of the assertion. Users must edit the file to verify -->
    <!-- that the modified assertion is correct. User should then -->
    <!-- delete the original assertion or use the style sheet -->
    <!-- that removes them automatically.  The original and modified -->
    <!-- assertions differ by their IDs, notice the original assertion -->
    <!-- now ends with "__OLD" -->
    <!-- ****** ORIGINAL ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>440__OLD</id>
      <description>Get a message header as a single string value. Each single header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** MODIFIED ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>440</id>
      <description>Get a message header as a single string value. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** ORIGINAL ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>689__OLD</id>
      <description>Get a message header as a single string value. Each single header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** MODIFIED ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>689</id>
      <description>Get a message header as a single string value. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** ORIGINAL ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>758__OLD</id>
      <description>Register an instance of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. Implementations SHOULD warn about and ignore registrations that do not conform to the requirements of supported JAX-RS component types in the given configurable context. Any subsequent registration attempts for a component type, for which a class or instance-based registration already exists in the system MUST be rejected by the JAX-RS implementation and a warning SHOULD be raised to inform the user about the rejected registration. The registered JAX-RS component is registered as a contract provider of all the recognized JAX-RS or implementation-specific extension contracts including meta-provider contracts, such as Feature or jakarta.ws.rs.container.DynamicFeature. As opposed to components registered via #register(Class) method, the lifecycle of providers registered using this instance-based register(...) is not managed by JAX-RS runtime. The same registered component instance is used during the whole lifespan of the configurable context. Fields and properties of all registered JAX-RS component instances are injected with their declared dependencies (see Context) by the JAX-RS runtime prior to use.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** MODIFIED ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>758</id>
      <description>Register an instance of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. Implementations SHOULD warn about and ignore registrations that do not conform to the requirements of supported JAX-RS component types in the given configurable context. Any subsequent registration attempts for a component type, for which a class or instance-based registration already exists in the system MUST be rejected by the JAX-RS implementation and a warning SHOULD be raised to inform the user about the rejected registration. The registered JAX-RS component is registered as a contract provider of all the recognized JAX-RS or implementation-specific extension contracts including meta-provider contracts, such as Feature or jakarta.ws.rs.container.DynamicFeature. As opposed to components registered via #register(Class) method, the lifecycle of providers registered using this instance-based register(...) is not managed by JAX-RS runtime. The same registered component instance is used during the whole lifespan of the configurable context. Fields and properties of all registered JAX-RS component instances are injected with their declared dependencies by the JAX-RS runtime prior to use.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** ORIGINAL ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>780__OLD</id>
      <description>Get a HTTP header as a single string value. Each single header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** MODIFIED ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>780</id>
      <description>Get a HTTP header as a single string value. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="getHeaderString" return-type="java.lang.String">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** ORIGINAL ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>994__OLD</id>
      <description>Get the immutable set of registered JAX-RS component (such as provider or Feature feature) instances to be utilized by the configurable instance. Fields and properties of returned instances are injected with their declared dependencies (see Context) by the runtime prior to use. For each component type, there can be only a single class-based or instance-based registration present in the configuration context at any given time.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getInstances" return-type="java.util.Set" />
    </assertion>
    <!-- ****** MODIFIED ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>994</id>
      <description>Get the immutable set of registered JAX-RS component (such as provider or Feature feature) instances to be utilized by the configurable instance. Fields and properties of returned instances are injected with their declared dependencies by the runtime prior to use. For each component type, there can be only a single class-based or instance-based registration present in the configuration context at any given time.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configuration</class-interface>
      <method name="getInstances" return-type="java.util.Set" />
    </assertion>
    <!-- ****** ORIGINAL ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <modified />
      <id>23__OLD</id>
      <description>Get a set of root resource, provider and Feature feature instances. Fields and properties of returned instances are injected with their declared dependencies (see Context) by the runtime prior to use. Implementations should warn about and ignore classes that do not conform to the requirements of root resource or provider classes. Implementations should flag an error if the returned set includes more than one instance of the same class. Implementations MUST NOT modify the returned set. The default implementation returns an empty set.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Application</class-interface>
      <method name="getSingletons" return-type="java.util.Set" />
    </assertion>
    <!-- ****** MODIFIED ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <id>23</id>
      <description>Get a set of root resource, provider and Feature feature instances. Fields and properties of returned instances are injected with their declared dependencies by the runtime prior to use. Implementations should warn about and ignore classes that do not conform to the requirements of root resource or provider classes. Implementations should flag an error if the returned set includes more than one instance of the same class. Implementations MUST NOT modify the returned set. The default implementation returns an empty set.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Application</class-interface>
      <method name="getSingletons" return-type="java.util.Set" />
    </assertion>
    <!-- ****** ORIGINAL ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1285__OLD</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.Builder</class-interface>
      <method name="Cookie.Builder" return-type="Cookie.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ****** MODIFIED ASSERTION ****** -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1285</id>
      <description>Create a new instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Cookie.Builder</class-interface>
      <method name="Cookie.Builder" return-type="Cookie.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- REMOVED ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>815</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbAdapter</class-interface>
      <method name="Link.JaxbAdapter" return-type="Link.JaxbAdapter" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>816</id>
      <description>Convert a Link into a JaxbLink.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbAdapter</class-interface>
      <method name="marshal" return-type="jakarta.ws.rs.core.Link.Link.JaxbLink">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>818</id>
      <description>Convert a JaxbLink into a Link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbAdapter</class-interface>
      <method name="unmarshal" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link.Link.JaxbLink</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>820</id>
      <description>Get the parameter map for this link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbLink</class-interface>
      <method name="getParams" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>821</id>
      <description>Get the underlying URI for this link.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbLink</class-interface>
      <method name="getUri" return-type="java.net.URI" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>822</id>
      <description>Default constructor needed during unmarshalling.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbLink</class-interface>
      <method name="Link.JaxbLink" return-type="Link.JaxbLink" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>823</id>
      <description>Construct an instance from a URI and no parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbLink</class-interface>
      <method name="Link.JaxbLink" return-type="Link.JaxbLink">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>824</id>
      <description>Construct an instance from a URI and some parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbLink</class-interface>
      <method name="Link.JaxbLink" return-type="Link.JaxbLink">
        <parameters>
          <parameter>java.net.URI</parameter>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1192</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbLink</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1193</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.JaxbLink</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- NEW ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1353</id>
      <description>Checks whether a header with a specific name and value (or item of the token-separated value list) exists. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available. For example: containsHeaderString("cache-control", ",", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1354</id>
      <description>Checks whether a header with a specific name and value (or item of the comma-separated value list) exists. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available. For example: containsHeaderString("cache-control", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1355</id>
      <description>Checks whether a header with a specific name and value (or item of the token-separated value list) exists. For example: containsHeaderString("cache-control", ",", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1356</id>
      <description>Checks whether a header with a specific name and value (or item of the comma-separated value list) exists. For example: containsHeaderString("cache-control", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientResponseContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1357</id>
      <description>Checks whether a header with a specific name and value (or item of the token-separated value list) exists. For example: containsHeaderString("cache-control", ",", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1358</id>
      <description>Checks whether a header with a specific name and value (or item of the comma-separated value list) exists. For example: containsHeaderString("cache-control", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerRequestContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1359</id>
      <description>Checks whether a header with a specific name and value (or item of the token-separated value list) exists. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available. For example: containsHeaderString("cache-control", ",", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1360</id>
      <description>Checks whether a header with a specific name and value (or item of the comma-separated value list) exists. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available. For example: containsHeaderString("cache-control", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1361</id>
      <description>Checks whether a header with a specific name and value (or item of the token-separated value list) exists. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available. For example: containsHeaderString("cache-control", ",", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1362</id>
      <description>Checks whether a header with a specific name and value (or item of the comma-separated value list) exists. Each single non-string header value is converted to String using a jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate if one is available via jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class) for the header value class or using its toString method if a header delegate is not available. For example: containsHeaderString("cache-control", "no-store"::equalsIgnoreCase) will return true if a Cache-Control header exists that has the value no-store, the value No-Store or the value Max-Age, NO-STORE, no-transform, but false when it has the value no-store;no-transform (missing comma), or the value no - store (whitespace within value).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>HttpHeaders</class-interface>
      <method name="containsHeaderString" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.function.Predicate</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>JAXRS:JAVADOC:1363</id>
      <description>if an I/O error occurs.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSink</class-interface>
      <method name="close" return-type="void">
        <throw>java.io.IOException</throw>
      </method>
    </assertion>
  </assertions>
</javadoc>

