<?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) 2021 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>1353</next-available-id>
  <previous-id>1243</previous-id>
  <technology>JAXRS</technology>
  <id>JAXRS</id>
  <name>JavaTM API for RESTful Web Services</name>
  <version>3.1</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 it's 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>440</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>
    <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>689</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>
    <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 it's resume(...) methods, cancel the suspended response using one of it's 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>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 (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>
    <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>780</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>
    <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>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 (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>
    <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 it's 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>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- DEPRECATED ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <modified />
      <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 (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>
    <assertion required="true" impl-spec="false" status="deprecated" testable="true">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <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="deprecated" 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="deprecated" 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="deprecated" 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="deprecated" 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="deprecated" 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="deprecated" 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="deprecated" 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="deprecated" testable="true">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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="deprecated" 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="deprecated" 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>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- MODIFIED ASSERTIONS LISTED BELOW -->
    <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>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- NEW ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <id>JAXRS:JAVADOC:1285</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>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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">
      <modified />
      <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>
  </assertions>
</javadoc>

