<?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 its associated resources. Subsequent calls have no effect and are ignored. Once the client is closed, invoking any other method on the client instance would result in an IllegalStateException being thrown. Calling this method effectively invalidates all WebTarget resource targets produced by the client instance. Invoking any method on such targets once the client is closed would result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>411</id>
      <description>Build an invocation builder from a link. It uses the URI and the type of the link to initialize the invocation builder. The type is used as the initial value for the HTTP Accept header, if present.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="invocation" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>413</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>416</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>418</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>jakarta.ws.rs.core.UriBuilder</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>420</id>
      <description>Build a new web resource target.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="target" return-type="jakarta.ws.rs.client.WebTarget">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>427</id>
      <description>Abort the filter chain with a response. This method breaks the filter chain processing and returns the provided response back to the client. The provided response goes through the chain of applicable response filters.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="abortWith" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>428</id>
      <description>Get a list of languages that are acceptable for the response.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getAcceptableLanguages" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>429</id>
      <description>Get a list of media types that are acceptable for the response.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getAcceptableMediaTypes" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>430</id>
      <description>Get the client instance associated with the request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getClient" return-type="jakarta.ws.rs.client.Client" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>432</id>
      <description>Get any cookies that accompanied the request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getCookies" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>433</id>
      <description>Get message date.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getDate" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>434</id>
      <description>Get the message entity Java instance. Returns null if the message does not contain an entity.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntity" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>435</id>
      <description>Get the annotations attached to the entity instance. Note that the returned annotations array contains only those annotations explicitly attached to entity instance (such as the ones attached using Entity#Entity(Object, jakarta.ws.rs.core.MediaType, java.lang.annotation.Annotation[]) method). The entity instance annotations array does not include annotations declared on the entity implementation class or its ancestors.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityAnnotations" return-type="java.lang.annotation.Annotation[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>436</id>
      <description>Get the raw entity type information.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityClass" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>437</id>
      <description>Get the entity output stream. The JAX-RS runtime is responsible for closing the output stream.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityStream" return-type="java.io.OutputStream" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>438</id>
      <description>Get the generic entity type information.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getEntityType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>439</id>
      <description>Get the mutable request headers multivalued map.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="getHeaders" return-type="jakarta.ws.rs.core.MultivaluedMap" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>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 its resume(...) methods, cancel the suspended response using one of its cancel(...) methods, or extend the suspend period by AsyncResponse#setTimeout(long, java.util.concurrent.TimeUnit) setting a new suspend time-out In case the time-out handler does not take any of the actions mentioned above, a default time-out strategy is executed by the JAX-RS runtime.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>TimeoutHandler</class-interface>
      <method name="handleTimeout" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.container.AsyncResponse</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>726</id>
      <description>Initialize the backing store in the abstract parent multivalued map implementation.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="AbstractMultivaluedMap" return-type="AbstractMultivaluedMap">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>727</id>
      <description>Add a value to the current list of values for the supplied key. NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="add" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>728</id>
      <description>Add multiple values to the current list of values for the supplied key. If the supplied array of new values is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null. NOTE: This implementation ignores null values; Any of the supplied values of null is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="addAll" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>729</id>
      <description>Add all the values from the supplied value list to the current list of values for the supplied key. If the supplied value list is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null. NOTE: This implementation ignores null values; Any null value in the supplied value list is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="addAll" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>730</id>
      <description>Add a value to the first position in the current list of values for the supplied key. NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the purged value list. Overriding implementations may modify this behavior by redefining the #addFirstNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="addFirst" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>731</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="clear" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>732</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="containsKey" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>733</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="containsValue" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>734</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="entrySet" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>736</id>
      <description>Compare the specified map with this map for equality modulo the order of values for each key. Specifically, the values associated with each key are compared as if they were ordered lists.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="equalsIgnoreValueOrder" return-type="boolean">
        <parameters>
          <parameter>jakarta.ws.rs.core.MultivaluedMap</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>737</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="get" return-type="java.util.List">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>738</id>
      <description>A shortcut to get the first value of the supplied key.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="getFirst" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>740</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="isEmpty" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>741</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="keySet" return-type="java.util.Set" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>742</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="put" return-type="java.util.List">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.util.List</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>743</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="putAll" return-type="void">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>744</id>
      <description>Set the value for the key to be a one item list consisting of the supplied value. Any existing values will be replaced. NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the purged value list. As a result of such operation, empty value list would be registered for the supplied key. Overriding implementations may modify this behavior by redefining the #addNull(java.util.List) method.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="putSingle" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>745</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="remove" return-type="java.util.List">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>746</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="size" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>747</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>748</id>
      <description />
      <package>jakarta.ws.rs.core</package>
      <class-interface>AbstractMultivaluedMap</class-interface>
      <method name="values" return-type="java.util.Collection" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>754</id>
      <description>Register a class of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. Implementations SHOULD warn about and ignore registrations that do not conform to the requirements of supported JAX-RS component types in the given configurable context. Any subsequent registration attempts for a component type, for which a class or instance-based registration already exists in the system MUST be rejected by the JAX-RS implementation and a warning SHOULD be raised to inform the user about the rejected registration. The registered JAX-RS component class is registered as a contract provider of all the recognized JAX-RS or implementation-specific extension contracts including meta-provider contracts, such as Feature or jakarta.ws.rs.container.DynamicFeature. As opposed to component instances registered via #register(Object) method, the lifecycle of components registered using this class-based register(...) method is fully managed by the JAX-RS implementation or any underlying IoC container supported by the implementation.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>755</id>
      <description>Register a class of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides the same functionality as #register(Class) except that any priority specified on the registered JAX-RS component class via jakarta.annotation.Priority annotation is overridden with the supplied priority value. Note that in case the priority is not applicable to a particular provider contract implemented by the class of the registered component, the supplied priority value will be ignored for that contract.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>756</id>
      <description>Register a class of a custom JAX-RS component (such as an extension provider or a jakarta.ws.rs.core.Feature feature meta-provider) to be instantiated and used in the scope of this configurable context. This registration method provides the same functionality as #register(Class) except the JAX-RS component class is only registered as a provider of the listed extension provider or meta-provider contracts. All explicitly enumerated contract types must represent a class or an interface implemented or extended by the registered component. Contracts that are not Class#isAssignableFrom(Class) assignable from the registered component class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="register" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>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 its identification information.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="hostnameVerifier" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>javax.net.ssl.HostnameVerifier</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1016</id>
      <description>Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys. Setting a key store instance resets any #sslContext(javax.net.ssl.SSLContext) SSL context instance value previously specified. Note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="keyStore" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.security.KeyStore</parameter>
          <parameter>char[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1017</id>
      <description>Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys. Setting a key store instance resets any #sslContext(javax.net.ssl.SSLContext) SSL context instance value previously specified. Note that for improved security of working with password data and avoid storing passwords in Java string objects, the #keyStore(java.security.KeyStore, char[]) version of the method can be utilized. Also note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="keyStore" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.security.KeyStore</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1018</id>
      <description>Create a new ClientBuilder instance using the default client builder implementation class provided by the JAX-RS implementation provider.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="newBuilder" return-type="jakarta.ws.rs.client.ClientBuilder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1019</id>
      <description>Create a new Client instance using the default client builder implementation class provided by the JAX-RS implementation provider.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="newClient" return-type="jakarta.ws.rs.client.Client" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1020</id>
      <description>Create a new custom-configured Client instance using the default client builder implementation class provided by the JAX-RS implementation provider.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="newClient" return-type="jakarta.ws.rs.client.Client">
        <parameters>
          <parameter>jakarta.ws.rs.core.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1021</id>
      <description>Set the SSL context that will be used when creating secured transport connections to server endpoints from WebTarget web targets created by the client instance that is using this SSL context. The SSL context is expected to have all the security infrastructure initialized, including the key and trust managers. Setting a SSL context instance resets any #keyStore(java.security.KeyStore, char[]) key store or #trustStore(java.security.KeyStore) trust store values previously specified.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="sslContext" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>javax.net.ssl.SSLContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1022</id>
      <description>Set the client-side trust store. Trust store is expected to contain certificates from other parties the client is you expect to communicate with, or from Certificate Authorities that are trusted to identify other parties. Setting a trust store instance resets any #sslContext(javax.net.ssl.SSLContext) SSL context instance value previously specified. In case a custom trust store or custom SSL context is not specified, the trust management will be configured to use the default Java runtime settings.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="trustStore" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>java.security.KeyStore</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1023</id>
      <description>Add the accepted response media types.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="accept" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1024</id>
      <description>Add the accepted response media types.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="accept" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1025</id>
      <description>Add acceptable encodings.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="acceptEncoding" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1026</id>
      <description>Get the HTTP response for which the processing has failed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="getResponse" return-type="jakarta.ws.rs.core.Response" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1027</id>
      <description>Constructs a new JAX-RS runtime response processing exception for a specific Response response with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause). This constructor is useful for runtime exceptions that are little more than wrappers for other throwables.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="ResponseProcessingException" return-type="ResponseProcessingException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1028</id>
      <description>Constructs a new JAX-RS runtime response processing exception with the specified detail message and cause. Note that the detail message associated with cause is not automatically incorporated in this runtime exception's detail message.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="ResponseProcessingException" return-type="ResponseProcessingException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1029</id>
      <description>Constructs a new JAX-RS runtime processing exception with the specified detail message. The cause is not initialized, and may subsequently be initialized by a call to #initCause.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ResponseProcessingException</class-interface>
      <method name="ResponseProcessingException" return-type="ResponseProcessingException">
        <parameters>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1030</id>
      <description>Register an asynchronous processing lifecycle callback class to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Collection">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1031</id>
      <description>Register asynchronous processing lifecycle callback classes to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Map">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1032</id>
      <description>Register an asynchronous processing lifecycle callback instance to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Collection">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1033</id>
      <description>Register an asynchronous processing lifecycle callback instances to receive lifecycle events for the asynchronous response based on the implemented callback interfaces.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="register" return-type="java.util.Map">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1034</id>
      <description>Set/update the suspend timeout. The new suspend timeout values override any timeout value previously specified. The asynchronous response must be still in a #isSuspended() suspended state for this method to succeed.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>AsyncResponse</class-interface>
      <method name="setTimeout" return-type="boolean">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1035</id>
      <description>Get a map of custom application-wide properties. The returned properties are reflected in the application Configuration configuration passed to the server-side features or injected into server-side JAX-RS components. The set of returned properties may be further extended or customized at deployment time using container-specific features and deployment descriptors. For example, in a Servlet-based deployment scenario, web application's and Servlet values may be used to extend or override values of the properties programmatically returned by this method. The default implementation returns an empty set.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Application</class-interface>
      <method name="getProperties" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1036</id>
      <description>Set the new configuration property, if already set, the existing value of the property will be updated. Setting a null value into a property effectively removes the property from the property bag.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Configurable</class-interface>
      <method name="property" return-type="jakarta.ws.rs.core.Configurable">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1038</id>
      <description>Convenience method to build a link from a path. Equivalent to fromUriBuilder(UriBuilder.fromPath(path)).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link</class-interface>
      <method name="fromPath" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1042</id>
      <description>Initialize builder using another link. Sets underlying URI and copies all parameters.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="link" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Link</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1044</id>
      <description>Get the cookie expiry date. Cookies whose expiry date has passed are discarded. A cookie can be unset by setting a new cookie with an expiry date in the past, typically the lowest possible date that can be set. Note that it is recommended to use #getMaxAge() Max-Age to control cookie expiration, however some browsers do not understand Max-Age, in which case setting Expires parameter may be necessary.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="getExpiry" return-type="java.util.Date" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1045</id>
      <description>Returns true if this cookie contains the HttpOnly attribute. This means that the cookie should not be accessible to scripting engines, like javascript.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NewCookie</class-interface>
      <method name="isHttpOnly" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1049</id>
      <description>Relativize a URI with respect to the current request URI. Relativization works as follows: If the URI to relativize is already relative, it is first resolved using #resolve(java.net.URI). The resulting URI is relativized with respect to the current request URI. If the two URIs do not share a prefix, the URI computed in step 1 is returned. Examples (for base URI http://example.com:8080/app/root/): Request URI: http://example.com:8080/app/root/a/b/c/resource.html Supplied URI: a/b/c/d/file.txt Returned URI: d/file.txt Request URI: http://example.com:8080/app/root/a/b/c/resource.html Supplied URI: http://example2.com:9090/app2/root2/a/d/file.txt Returned URI: http://example2.com:9090/app2/root2/a/d/file.txt In the second example, the supplied URI is returned given that it is absolute and there is no common prefix between it and the request URI.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="relativize" return-type="java.net.URI">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1051</id>
      <description>Resolve a relative URI with respect to the base URI of the application. The resolved URI returned by this method is normalized. If the supplied URI is already resolved, it is just returned.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>UriInfo</class-interface>
      <method name="resolve" return-type="java.net.URI">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1053</id>
      <description>Create a new instance of a jakarta.ws.rs.core.Link.Builder.</description>
      <package>jakarta.ws.rs.ext</package>
      <class-interface>RuntimeDelegate</class-interface>
      <method name="createLinkBuilder" return-type="jakarta.ws.rs.core.Link.Link.Builder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1054</id>
      <description>Finish building this link using the supplied values as URI parameters and relativize the result with respect to the supplied URI. If the underlying link is already relative or if it is absolute but does not share a prefix with the supplied URI, this method is equivalent to calling Link.Builder#build(java.lang.Object[]). Note that a base URI can be set on a relative link using Link.Builder#baseUri(java.net.URI). The state of the builder is unaffected; this method may be called multiple times on the same builder instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="buildRelativized" return-type="jakarta.ws.rs.core.Link">
        <parameters>
          <parameter>java.net.URI</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1056</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1057</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1058</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1059</id>
      <description>Construct a new bad client request exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>BadRequestException</class-interface>
      <method name="BadRequestException" return-type="BadRequestException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1060</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1061</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1062</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1063</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1064</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1065</id>
      <description>Construct a new client error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ClientErrorException</class-interface>
      <method name="ClientErrorException" return-type="ClientErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1066</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1067</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1068</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1069</id>
      <description>Construct a new "forbidden" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ForbiddenException</class-interface>
      <method name="ForbiddenException" return-type="ForbiddenException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1070</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1071</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1072</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1073</id>
      <description>Construct a new internal server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>InternalServerErrorException</class-interface>
      <method name="InternalServerErrorException" return-type="InternalServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1074</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1075</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1076</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1077</id>
      <description>Construct a new "request not acceptable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAcceptableException</class-interface>
      <method name="NotAcceptableException" return-type="NotAcceptableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1078</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1079</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1080</id>
      <description>Construct a new method not allowed exception. Note that this constructor does not validate the presence of HTTP Allow header. I.e. it is possible to use the constructor to create a client-side exception instance even for an invalid HTTP 405 response content returned from a server.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1081</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>java.lang.String[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1082</id>
      <description>Construct a new method not allowed exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAllowedException</class-interface>
      <method name="NotAllowedException" return-type="NotAllowedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1083</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1084</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1085</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1086</id>
      <description>Construct a new "not authorized" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotAuthorizedException</class-interface>
      <method name="NotAuthorizedException" return-type="NotAuthorizedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1087</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1088</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1089</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1090</id>
      <description>Construct a new "not found" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotFoundException</class-interface>
      <method name="NotFoundException" return-type="NotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1091</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1092</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1093</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1094</id>
      <description>Construct a new unsupported media type exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>NotSupportedException</class-interface>
      <method name="NotSupportedException" return-type="NotSupportedException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1095</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1096</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1097</id>
      <description>Construct a new redirection exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>RedirectionException</class-interface>
      <method name="RedirectionException" return-type="RedirectionException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1098</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1099</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1100</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1101</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1102</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1103</id>
      <description>Construct a new server error exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServerErrorException</class-interface>
      <method name="ServerErrorException" return-type="ServerErrorException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1104</id>
      <description>Construct a new "service unavailable" exception without any "Retry-After" information specified for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1105</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Long</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1106</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.Date</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1107</id>
      <description>Construct a new "service unavailable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1108</id>
      <description>Construct a new "service unavailable" exception with a date specifying the "Retry-After" information for the failed request and an underlying request failure cause.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.util.Date</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1109</id>
      <description>Construct a new "service unavailable" exception with an interval specifying the "Retry-After" information for the failed request and an underlying request failure cause.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Long</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1110</id>
      <description>Construct a new "service unavailable" exception.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>ServiceUnavailableException</class-interface>
      <method name="ServiceUnavailableException" return-type="ServiceUnavailableException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1111</id>
      <description>Construct a new instance with the supplied message and a default HTTP status code of 500.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1112</id>
      <description>Construct a new instance using the supplied message and response.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1113</id>
      <description>Construct a new instance with a supplied message and HTTP status code.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1114</id>
      <description>Construct a new instance with the supplied message and HTTP status.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1115</id>
      <description>Construct a new instance with the supplied message, root cause and default HTTP status code of 500.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1116</id>
      <description>Construct a new instance with the supplied message, root cause and response.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>jakarta.ws.rs.core.Response</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1117</id>
      <description>Construct a new instance with the supplied message, root cause and HTTP status code.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>int</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1118</id>
      <description>Construct a new instance with a the supplied message, root cause and HTTP status code.</description>
      <package>jakarta.ws.rs</package>
      <class-interface>WebApplicationException</class-interface>
      <method name="WebApplicationException" return-type="WebApplicationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
          <parameter>jakarta.ws.rs.core.Response.Response.Status</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1119</id>
      <description>Get the hostname verifier configured in the client or null in case no hostname verifier has been configured.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Client</class-interface>
      <method name="getHostnameVerifier" return-type="javax.net.ssl.HostnameVerifier" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1120</id>
      <description>Set the internal configuration state to an externally provided configuration state.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="withConfig" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>jakarta.ws.rs.core.Configuration</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1121</id>
      <description>Set a new message entity. The existing entity #getEntityAnnotations() annotations and #getMediaType() media type are preserved. It is the callers responsibility to wrap the actual entity with jakarta.ws.rs.core.GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientRequestContext</class-interface>
      <method name="setEntity" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1122</id>
      <description>Set a new property in the context of a request represented by this invocation. The property is available for a later retrieval via ClientRequestContext#getProperty(String) or jakarta.ws.rs.ext.InterceptorContext#getProperty(String). If a property with a given name is already set in the request context, the existing value of the property will be updated. Setting a null value into a property effectively removes the property from the request property bag.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation</class-interface>
      <method name="property" return-type="jakarta.ws.rs.client.Invocation">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1123</id>
      <description>Set a new property in the context of a request represented by this invocation builder. The property is available for a later retrieval via ClientRequestContext#getProperty(String) or jakarta.ws.rs.ext.InterceptorContext#getProperty(String). If a property with a given name is already set in the request context, the existing value of the property will be updated. Setting a null value into a property effectively removes the property from the request property bag.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="property" return-type="jakarta.ws.rs.client.Invocation.Invocation.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1124</id>
      <description>Set a new message entity. The existing entity #getEntityAnnotations() annotations and #getMediaType() media type are preserved. It is the callers responsibility to wrap the actual entity with jakarta.ws.rs.core.GenericEntity if preservation of its generic type is required.</description>
      <package>jakarta.ws.rs.container</package>
      <class-interface>ContainerResponseContext</class-interface>
      <method name="setEntity" return-type="void">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1125</id>
      <description>Set the base URI for resolution of relative URIs. If the underlying URI is already absolute, the base URI is ignored.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="baseUri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.net.URI</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1126</id>
      <description>Set the base URI as a string for resolution of relative URIs. If the underlying URI is already absolute, the base URI is ignored.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Link.Builder</class-interface>
      <method name="baseUri" return-type="jakarta.ws.rs.core.Link.Link.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1127</id>
      <description>Construct a new NoContentException instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NoContentException</class-interface>
      <method name="NoContentException" return-type="NoContentException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1128</id>
      <description>Construct a new NoContentException instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NoContentException</class-interface>
      <method name="NoContentException" return-type="NoContentException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1129</id>
      <description>Construct a new NoContentException instance.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>NoContentException</class-interface>
      <method name="NoContentException" return-type="NoContentException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1130</id>
      <description>Set the connect timeout. Value 0 represents infinity. Negative values are not allowed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="connectTimeout" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1132</id>
      <description>Set the read timeout. The value is the timeout to read a response. If the server doesn't respond within the defined timeframe, ProcessingException is thrown with TimeoutException as a cause. Value 0 represents infinity. Negative values are not allowed.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>ClientBuilder</class-interface>
      <method name="readTimeout" return-type="jakarta.ws.rs.client.ClientBuilder">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1134</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1135</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1136</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="delete" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1137</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1138</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1139</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="get" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1140</id>
      <description>Invoke HTTP HEAD method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="head" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1141</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1142</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1143</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1144</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1145</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1146</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="method" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1147</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1148</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1149</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="options" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1150</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1151</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1152</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="post" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1153</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1154</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1155</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="put" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1156</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.CompletionStage" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1157</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1158</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>CompletionStageRxInvoker</class-interface>
      <method name="trace" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1159</id>
      <description />
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="equals" return-type="boolean">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1160</id>
      <description />
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1161</id>
      <description />
      <package>jakarta.ws.rs.client</package>
      <class-interface>Entity</class-interface>
      <method name="toString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1162</id>
      <description>Access the default reactive invoker based on java.util.concurrent.CompletionStage.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="rx" return-type="jakarta.ws.rs.client.CompletionStageRxInvoker" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1163</id>
      <description>Access a reactive invoker based on a RxInvoker subclass provider. Note that corresponding RxInvokerProvider must be registered in the client runtime. This method is an extension point for JAX-RS implementations to support other types representing asynchronous computations.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>Invocation.Builder</class-interface>
      <method name="rx" return-type="jakarta.ws.rs.client.RxInvoker">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1164</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1165</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1166</id>
      <description>Invoke HTTP DELETE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="delete" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1167</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="get" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1168</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="get" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1169</id>
      <description>Invoke HTTP GET method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="get" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1170</id>
      <description>Invoke HTTP HEAD method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="head" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1171</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1172</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1173</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1174</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1175</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1176</id>
      <description>Invoke an arbitrary method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="method" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1177</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="options" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1178</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="options" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1179</id>
      <description>Invoke HTTP OPTIONS method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="options" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1180</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1181</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1182</id>
      <description>Invoke HTTP POST method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="post" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1183</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1184</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1185</id>
      <description>Invoke HTTP PUT method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="put" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.client.Entity</parameter>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1186</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1187</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1188</id>
      <description>Invoke HTTP TRACE method for the current request.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvoker</class-interface>
      <method name="trace" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1189</id>
      <description>Get RxInvoker implementation instance. The returned instance has to be thread safe.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvokerProvider</class-interface>
      <method name="getRxInvoker" return-type="jakarta.ws.rs.client.RxInvoker">
        <parameters>
          <parameter>jakarta.ws.rs.client.SyncInvoker</parameter>
          <parameter>java.util.concurrent.ExecutorService</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1190</id>
      <description>Determine if this is a provider for the given RxInvoker subclass.</description>
      <package>jakarta.ws.rs.client</package>
      <class-interface>RxInvokerProvider</class-interface>
      <method name="isProviderFor" return-type="boolean">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1191</id>
      <description>Create a jakarta.ws.rs.core.GenericType generic type from a Java instance. If the supplied instance is a jakarta.ws.rs.core.GenericEntity, the generic type will be computed using the jakarta.ws.rs.core.GenericEntity#getType(). Otherwise instance.getClass() will be used.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>GenericType</class-interface>
      <method name="forInstance" return-type="jakarta.ws.rs.core.GenericType">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1194</id>
      <description>Create a new ResponseBuilder with the supplied status and reason phrase.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>int</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1195</id>
      <description>Set the status on the ResponseBuilder.</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.ResponseBuilder</class-interface>
      <method name="status" return-type="jakarta.ws.rs.core.Response.Response.ResponseBuilder">
        <parameters>
          <parameter>int</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1196</id>
      <description>Get the this Status Type as a Status. Please note that returned status contains only a status code, the reason phrase is set to default one (corresponding to the status code).</description>
      <package>jakarta.ws.rs.core</package>
      <class-interface>Response.StatusType</class-interface>
      <method name="toEnum" return-type="jakarta.ws.rs.core.Response.Response.Status" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1197</id>
      <description>Check if the event is empty (i.e. does not contain any data).</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="isEmpty" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1198</id>
      <description>Get the original event data as String.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1199</id>
      <description>Read event data as a given Java type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1200</id>
      <description>Read event data as a given generic type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1201</id>
      <description>Read event data as a given Java type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1202</id>
      <description>Read event data as a given generic type.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>InboundSseEvent</class-interface>
      <method name="readData" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1203</id>
      <description>Get event data. The event data, if specified, are serialized and sent as one or more SSE event "data" fields (depending on the line breaks in the actual serialized data content). The data are serialized using an available jakarta.ws.rs.ext.MessageBodyWriter that is selected based on the event #getType() type, #getGenericType() generic type} and #getMediaType() media type}.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getData" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1204</id>
      <description>Get generic data type. This information is used to select a proper jakarta.ws.rs.ext.MessageBodyWriter to be used for serializing the #getData() event data.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getGenericType" return-type="java.lang.reflect.Type" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1205</id>
      <description>Get MediaType media type of the event data. This information is used to a select proper jakarta.ws.rs.ext.MessageBodyWriter to be used for serializing the #getData() event data.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getMediaType" return-type="jakarta.ws.rs.core.MediaType" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1206</id>
      <description>Get data type. This information is used to select a proper jakarta.ws.rs.ext.MessageBodyWriter to be used for serializing the #getData() event data.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent</class-interface>
      <method name="getType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1207</id>
      <description>Build OutboundSseEvent. There are two valid configurations: if a Builder#comment(String) comment is set, all other parameters are optional. If event Builder#data(Class, Object) data and Builder#mediaType(MediaType) media type is set, event data will be serialized after the comment. if a Builder#comment(String) comment is not set, at least the event Builder#data(Class, Object) data must be set. All other parameters are optional.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.sse.OutboundSseEvent" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1208</id>
      <description>Set comment string associated with the event. The comment will be serialized with the event, before event data are serialized. If the event does not contain any data, a separate "event" that contains only the comment will be sent. This information is optional, provided the event data are set. Note that multiple invocations of this method result in a previous comment being replaced with a new one. To achieve multi-line comments, a multi-line comment string has to be used.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="comment" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1209</id>
      <description>Set event data and java type of event data. Type information will be used for jakarta.ws.rs.ext.MessageBodyWriter lookup. Note that multiple invocations of this method result in previous even data being replaced with new one.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="data" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1210</id>
      <description>Set event data and a generic java type of event data. Type information will be used for jakarta.ws.rs.ext.MessageBodyWriter lookup. Note that multiple invocations of this method result in previous even data being replaced with new one.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="data" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.GenericType</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1211</id>
      <description>Set event data and java type of event data. This is a convenience method that derives the event data type information from the runtime type of the event data. The supplied event data may be represented as jakarta.ws.rs.core.GenericEntity. Note that multiple invocations of this method result in previous even data being replaced with new one.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="data" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1212</id>
      <description>Set the event id. Will be send as a value of the SSE "id" field. This field is optional.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="id" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1213</id>
      <description>Set the MediaType media type of the event data. This information is mandatory. The default value is MediaType#TEXT_PLAIN.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="mediaType" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.core.MediaType</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1214</id>
      <description>Set event name. Will be send as a value of the SSE "event" field. This field is optional.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="name" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1215</id>
      <description>Set reconnection delay (in milliseconds) that indicates how long the event receiver should wait before attempting to reconnect in case a connection to SSE event source is lost. Will be send as a value of the SSE "retry" field. This field is optional. Absence of a value of this field in an OutboundSseEvent instance is indicated by SseEvent#RECONNECT_NOT_SET value returned from #getReconnectDelay().</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>OutboundSseEvent.Builder</class-interface>
      <method name="reconnectDelay" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder">
        <parameters>
          <parameter>long</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1216</id>
      <description>Get a new Server-sent event broadcaster.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newBroadcaster" return-type="jakarta.ws.rs.sse.SseBroadcaster" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1217</id>
      <description>Create new OutboundSseEvent from provided data. The data can be string only and must not be null.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newEvent" return-type="jakarta.ws.rs.sse.OutboundSseEvent">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1218</id>
      <description>Create new OutboundSseEvent from provided data and name.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newEvent" return-type="jakarta.ws.rs.sse.OutboundSseEvent">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1219</id>
      <description>Get a new outbound event builder.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>Sse</class-interface>
      <method name="newEventBuilder" return-type="jakarta.ws.rs.sse.OutboundSseEvent.OutboundSseEvent.Builder" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1220</id>
      <description>Publish an SSE event to all registered SseEventSink instances.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="broadcast" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.sse.OutboundSseEvent</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1224</id>
      <description>Register provided SseEventSink instance to this SseBroadcaster.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseBroadcaster</class-interface>
      <method name="register" return-type="void">
        <parameters>
          <parameter>jakarta.ws.rs.sse.SseEventSink</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1225</id>
      <description>Get a comment string that accompanies the event. Contains value of the comment associated with SSE event. This field is optional. Method may return null, if the event comment is not specified.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getComment" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1226</id>
      <description>Get event identifier. Contains value of SSE "id" field. This field is optional. Method may return null, if the event identifier is not specified.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getId" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1227</id>
      <description>Get event name. Contains value of SSE "event" field. This field is optional. Method may return null, if the event name is not specified.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getName" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1228</id>
      <description>Get new connection retry time in milliseconds the event receiver should wait before attempting to reconnect after a connection to the SSE event source is lost. Contains value of SSE "retry" field. This field is optional. Method returns #RECONNECT_NOT_SET if no value has been set.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="getReconnectDelay" return-type="long" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1229</id>
      <description>Check if the connection retry time has been set in the event.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEvent</class-interface>
      <method name="isReconnectDelaySet" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1230</id>
      <description>Close the SseEventSink instance and release all associated resources. Subsequent calls have no effect and are ignored. Once the SseEventSink is closed, invoking any method other than this one and #isClosed() would result in an IllegalStateException being thrown.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSink</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1231</id>
      <description>Check if the stream has been closed already. Please note that the client connection represented by this SseServerSink can be closed by the client side when a client decides to close connection and disconnect from the server.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSink</class-interface>
      <method name="isClosed" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1232</id>
      <description>Send an outbound Server-sent event to this sink. Event will be serialized and sent to the client.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSink</class-interface>
      <method name="send" return-type="java.util.concurrent.CompletionStage">
        <parameters>
          <parameter>jakarta.ws.rs.sse.OutboundSseEvent</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1233</id>
      <description>Close this event source. The method will wait up to 5 seconds for the internal event processing tasks to complete.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="close" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1234</id>
      <description>Close this event source and wait for the internal event processing task to complete for up to the specified amount of wait time. The method blocks until the event processing task has completed execution after a shutdown request, or until the timeout occurs, or the current thread is interrupted, whichever happens first. In case the waiting for the event processing task has been interrupted, this method restores the Thread#interrupted() interrupt flag on the thread before returning false.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="close" return-type="boolean">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1235</id>
      <description>Check if this event source instance has already been #open() opened.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="isOpen" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1236</id>
      <description>Open the connection to the supplied SSE underlying WebTarget web target and start processing incoming InboundSseEvent events.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="open" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1237</id>
      <description>Register a InboundSseEvent consumer. Given consumer is invoked once per each received event.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="register" return-type="void">
        <parameters>
          <parameter>java.util.function.Consumer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1238</id>
      <description>Register InboundSseEvent and Throwable consumers. Event consumer is invoked once per each received event, Throwable consumer is invoked invoked upon a unrecoverable error encountered by a SseEventSource.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="register" return-type="void">
        <parameters>
          <parameter>java.util.function.Consumer</parameter>
          <parameter>java.util.function.Consumer</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1240</id>
      <description>Create a new SseEventSource.Builder event source builder that provides convenient way how to configure and fine-tune various aspects of a newly prepared event source instance.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource</class-interface>
      <method name="target" return-type="jakarta.ws.rs.sse.SseEventSource.SseEventSource.Builder">
        <parameters>
          <parameter>jakarta.ws.rs.client.WebTarget</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1241</id>
      <description>Build new SSE event source pointing at a SSE streaming WebTarget web target. The returned event source is ready, but not SseEventSource#open() connected to the SSE endpoint. It is expected that you will manually invoke its #open() method once you are ready to start receiving SSE events. In case you want to build an event source instance that is already connected to the SSE endpoint, use the event source builder #open() method instead. Once the event source is open, the incoming events are processed by the event source in an asynchronous task that runs in an internal single-threaded ScheduledExecutorService scheduled executor service.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource.Builder</class-interface>
      <method name="build" return-type="jakarta.ws.rs.sse.SseEventSource" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>JAXRS:JAVADOC:1242</id>
      <description>Set the initial reconnect delay to be used by the event source. Note that this value may be later overridden by the SSE endpoint using either a retry SSE event field or HTTP 503 + mechanism as described in the SseEventSource javadoc.</description>
      <package>jakarta.ws.rs.sse</package>
      <class-interface>SseEventSource.Builder</class-interface>
      <method name="reconnectingEvery" return-type="jakarta.ws.rs.sse.SseEventSource.SseEventSource.Builder">
        <parameters>
          <parameter>long</parameter>
          <parameter>java.util.concurrent.TimeUnit</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- 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>

