<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE javadoc SYSTEM "https://raw.githubusercontent.com/eclipse-ee4j/jakartaee-tck-tools/refs/heads/master/docs/dtd/assertions/javadoc_assertions.dtd">
<!--

    Copyright (c) 2018, 2025 Oracle and/or its affiliates and others.
    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>414</next-available-id>
  <previous-id>410</previous-id>
  <technology>EL</technology>
  <id>EL</id>
  <name>Expression Language</name>
  <version>5.0</version>
  <assertions>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- UNMODIFIED ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>1</id>
      <description>Creates a new read/write ArrayELResolver.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="ArrayELResolver" return-type="ArrayELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>2</id>
      <description>Creates a new ArrayELResolver whose read-only status is determined by the given parameter.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="ArrayELResolver" return-type="ArrayELResolver">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>3</id>
      <description>If the base object is a Java language array, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is an array, this method will always return Integer.class. This is because arrays accept integers for their index.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>5</id>
      <description>If the base object is an array, returns the most general acceptable type for a value in this array. If the base is a array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Assuming the base is an array, this method will always return base.getClass().getComponentType(), which is the most general type of component that can be stored at any given index in the array.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>6</id>
      <description>If the base object is a Java language array, returns the value at the given index. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, null is returned. If the base is a Java language array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>7</id>
      <description>If the base object is a Java language array, returns whether a call to #setValue will always fail. If the base is a Java language array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If this resolver was constructed in read-only mode, this method will always return true. Otherwise, it returns false.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>8</id>
      <description>If the base object is a Java language array, attempts to set the value at the given index with the given value. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, a PropertyNotFoundException is thrown. If the base is a Java language array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>9</id>
      <description>Creates a new read/write BeanELResolver.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="BeanELResolver" return-type="BeanELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>10</id>
      <description>Creates a new BeanELResolver whose read-only status is determined by the given parameter.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="BeanELResolver" return-type="BeanELResolver">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>11</id>
      <description>If the base object is not null, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is not null, this method will always return Object.class. This is because any object is accepted as a key and is coerced into a string.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>13</id>
      <description>If the base object is not null, returns the most general acceptable type that can be set on this bean property. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. The provided property will first be coerced to a String. If there is a BeanInfoProperty for this property and there were no errors retrieving it, the propertyType of the propertyDescriptor is returned. Otherwise, a PropertyNotFoundException is thrown.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>14</id>
      <description>If the base object is not null, returns the current value of the given property on this bean. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. The provided property name will first be coerced to a String. If the property is a readable property of the base object, as per the JavaBeans specification, then return the result of the getter call. If the getter throws an exception, it is propagated to the caller. If the property is not found or is not readable, a PropertyNotFoundException is thrown.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>15</id>
      <description>If the base object is not null, returns whether a call to #setValue will always fail. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always return true. The provided property name will first be coerced to a String. If property is a writable property of base, false is returned. If the property is found but is not writable, true is returned. If the property is not found, a PropertyNotFoundException is thrown.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>16</id>
      <description>If the base object is not null, attempts to set the value of the given property on this bean. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException. The provided property name will first be coerced to a String. If property is a writable property of base (as per the JavaBeans Specification), the setter method is called (passing value). If the property exists but does not have a setter, then a PropertyNotFoundException is thrown. If the property does not exist, a PropertyNotFoundException is thrown.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>24</id>
      <description>Adds the given resolver to the list of component resolvers. Resolvers are consulted in the order in which they are added.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="add" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELResolver</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>25</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="CompositeELResolver" return-type="CompositeELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>26</id>
      <description>Returns the most general type that this resolver accepts for the property argument, given a base object. One use for this method is to assist tools in auto-completion. The result is obtained by querying all component resolvers. The Class returned is the most specific class that is a common superclass of all the classes returned by each component resolver's getCommonPropertyType method. If null is returned by a resolver, it is skipped.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>28</id>
      <description>For a given base and property, attempts to identify the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. The result is obtained by querying all component resolvers. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The getType() method is called, passing in the provided context, base and property. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by getType() is returned by this method. If none of the component resolvers were able to perform this operation, the value null is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>29</id>
      <description>Attempts to resolve the given property object on the given base object by querying all component resolvers. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The getValue() method is called, passing in the provided context, base and property. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by getValue() is returned by this method. If none of the component resolvers were able to perform this operation, the value null is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>30</id>
      <description>For a given base and property, attempts to determine whether a call to #setValue will always fail. The result is obtained by querying all component resolvers. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The isReadOnly() method is called, passing in the provided context, base and property. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by isReadOnly() is returned by this method. If none of the component resolvers were able to perform this operation, the value false is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>31</id>
      <description>Attempts to set the value of the given property object on the given base object. All component resolvers are asked to attempt to set the value. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The setValue() method is called, passing in the provided context, base, property and value. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. If none of the component resolvers were able to perform this operation, the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>32</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="ELContext" return-type="ELContext" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>33</id>
      <description>Returns the context object associated with the given key. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to retrieve the context with the given key from the collection. By convention, the object returned will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</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>34</id>
      <description>Retrieves the ELResolver associated with this context. The ELContext maintains a reference to the ELResolver that will be consulted to resolve variables and properties during an expression evaluation. This method retrieves the reference to the resolver. Once an ELContext is constructed, the reference to the ELResolver associated with the context cannot be changed.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getELResolver" return-type="jakarta.el.ELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>35</id>
      <description>Retrieves the FunctionMapper associated with this ELContext.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getFunctionMapper" return-type="jakarta.el.FunctionMapper" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>36</id>
      <description>Get the Locale stored by a previous invocation to #setLocale. If this method returns non null, this Locale must be used for all localization needs in the implementation. The Locale must not be cached to allow for applications that change Locale dynamically.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getLocale" return-type="java.util.Locale" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>37</id>
      <description>Retrieves the VariableMapper associated with this ELContext.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getVariableMapper" return-type="jakarta.el.VariableMapper" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>38</id>
      <description>Returns whether an ELResolver has successfully resolved a given (base, property) pair. The CompositeELResolver checks this property to determine whether it should consider or skip other component resolvers.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="isPropertyResolved" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>39</id>
      <description>Associates a context object with this ELContext. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to add a context object to that collection. By convention, the contextObject will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="putContext" return-type="void">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>42</id>
      <description>Constructs an ELContextEvent object to indicate that an ELContext has been created.</description>
      <package>jakarta.el</package>
      <class-interface>ELContextEvent</class-interface>
      <method name="ELContextEvent" return-type="ELContextEvent">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>43</id>
      <description>Returns the ELContext that was created. This is a type-safe equivalent of the #getSource method.</description>
      <package>jakarta.el</package>
      <class-interface>ELContextEvent</class-interface>
      <method name="getELContext" return-type="jakarta.el.ELContext" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>44</id>
      <description>Invoked when a new ELContext has been created.</description>
      <package>jakarta.el</package>
      <class-interface>ELContextListener</class-interface>
      <method name="contextCreated" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContextEvent</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>45</id>
      <description>Creates an ELException with no detail message.</description>
      <package>jakarta.el</package>
      <class-interface>ELException</class-interface>
      <method name="ELException" return-type="ELException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>46</id>
      <description>Creates an ELException with the provided detail message.</description>
      <package>jakarta.el</package>
      <class-interface>ELException</class-interface>
      <method name="ELException" return-type="ELException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>47</id>
      <description>Creates an ELException with the given cause.</description>
      <package>jakarta.el</package>
      <class-interface>ELException</class-interface>
      <method name="ELException" return-type="ELException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>48</id>
      <description>Creates an ELException with the given detail message and root cause.</description>
      <package>jakarta.el</package>
      <class-interface>ELException</class-interface>
      <method name="ELException" return-type="ELException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>49</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="ELResolver" return-type="ELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>50</id>
      <description>Returns the most general type that this resolver accepts for the property argument, given a base object. One use for this method is to assist tools in auto-completion. This assists tools in auto-completion and also provides a way to express that the resolver accepts a primitive value, such as an integer index into an array. For example, the ArrayELResolver will accept any int as a property, so the return value would be Integer.class.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>52</id>
      <description>For a given base and property, attempts to identify the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. This is not always the same as getValue().getClass(). For example, in the case of an ArrayELResolver, the getType method will return the element type of the array, which might be a superclass of the type of the actual element that is currently in the specified array element.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>53</id>
      <description>Attempts to resolve the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>54</id>
      <description>For a given base and property, attempts to determine whether a call to #setValue will always fail. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>55</id>
      <description>Attempts to set the value of the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>56</id>
      <description>Determines whether the specified object is equal to this Expression. The result is true if and only if the argument is not null, is an Expression object that is the of the same type (ValueExpression or MethodExpression), and has an identical parsed representation. Note that two expressions can be equal if their expression Strings are different. For example, ${fn1:foo()} and ${fn2:foo()} are equal if their corresponding FunctionMappers mapped fn1:foo and fn2:foo to the same method.</description>
      <package>jakarta.el</package>
      <class-interface>Expression</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="false">
      <id>57</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>Expression</class-interface>
      <method name="Expression" return-type="Expression" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>58</id>
      <description>Returns the original String used to create this Expression, unmodified. This is used for debugging purposes but also for the purposes of comparison (e.g. to ensure the expression in a configuration file has not changed). This method does not provide sufficient information to re-create an expression. Two different expressions can have exactly the same expression string but different function mappings. Serialization should be used to save and restore the state of an Expression.</description>
      <package>jakarta.el</package>
      <class-interface>Expression</class-interface>
      <method name="getExpressionString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>59</id>
      <description>Returns the hash code for this Expression. See the note in the #equals method on how two expressions can be equal if their expression Strings are different. Recall that if two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. Implementations must take special note and implement hashCode correctly.</description>
      <package>jakarta.el</package>
      <class-interface>Expression</class-interface>
      <method name="hashCode" return-type="int" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>60</id>
      <description>Returns whether this expression was created from only literal text. This method must return true if and only if the expression string this expression was created from contained no unescaped EL delimeters (${...} or #{...}).</description>
      <package>jakarta.el</package>
      <class-interface>Expression</class-interface>
      <method name="isLiteralText" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>62</id>
      <description>Parses an expression into a MethodExpression for later evaluation. Use this method for expressions that refer to methods. If the expression is a String literal, a MethodExpression is created, which when invoked, returns the String literal, coerced to expectedReturnType. An ELException is thrown if expectedReturnType is void or if the coercion of the String literal to the expectedReturnType yields an error (see Section "1.16 Type Conversion"). This method should perform syntactic validation of the expression. If in doing so it detects errors, it should raise an ELException.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createMethodExpression" return-type="jakarta.el.MethodExpression">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>63</id>
      <description>Parses an expression into a ValueExpression for later evaluation. Use this method for expressions that refer to values. This method should perform syntactic validation of the expression. If in doing so it detects errors, it should raise an ELException.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createValueExpression" return-type="jakarta.el.ValueExpression">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>64</id>
      <description>Creates a ValueExpression that wraps an object instance. This method can be used to pass any object as a ValueExpression. The wrapper ValueExpression is read only, and returns the wrapped object via its getValue() method, optionally coerced.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createValueExpression" return-type="jakarta.el.ValueExpression">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>65</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="ExpressionFactory" return-type="ExpressionFactory" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>66</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>FunctionMapper</class-interface>
      <method name="FunctionMapper" return-type="FunctionMapper" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>67</id>
      <description>Resolves the specified prefix and local name into a java.lang.Method. Returns null if no function could be found that matches the given prefix and local name.</description>
      <package>jakarta.el</package>
      <class-interface>FunctionMapper</class-interface>
      <method name="resolveFunction" return-type="java.lang.reflect.Method">
        <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>68</id>
      <description>If the base object is a list, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is a List, this method will always return Integer.class. This is because Lists accept integers as their index.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>70</id>
      <description>If the base object is a list, returns the most general acceptable type for a value in this list. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Assuming the base is a List, this method will always return Object.class. This is because Lists accept any object as an element.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>71</id>
      <description>If the base object is a list, returns the value at the given index. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, null is returned. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>72</id>
      <description>If the base object is a list, returns whether a call to #setValue will always fail. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If this resolver was constructed in read-only mode, this method will always return true. If a List was created using java.util.Collections#unmodifiableList, this method must return true. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable List and query its runtime type to see if it matches the runtime type of the base object as a workaround.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>73</id>
      <description>Creates a new read/write ListELResolver.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="ListELResolver" return-type="ListELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>74</id>
      <description>Creates a new ListELResolver whose read-only status is determined by the given parameter.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="ListELResolver" return-type="ListELResolver">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>75</id>
      <description>If the base object is a list, attempts to set the value at the given index with the given value. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, a PropertyNotFoundException is thrown. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException. If a List was created using java.util.Collections#unmodifiableList, this method must throw PropertyNotWritableException. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable List and query its runtime type to see if it matches the runtime type of the base object as a workaround.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>76</id>
      <description>If the base object is a map, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is a Map, this method will always return Object.class. This is because Maps accept any object as a key.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>78</id>
      <description>If the base object is a map, returns the most general acceptable type for a value in this map. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Assuming the base is a Map, this method will always return Object.class. This is because Maps accept any object as the value for a given key.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>79</id>
      <description>If the base object is a map, returns the value associated with the given key, as specified by the property argument. If the key was not found, null is returned. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Just as in java.util.Map#get, just because null is returned doesn't mean there is no mapping for the key; it's also possible that the Map explicitly maps the key to null.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>80</id>
      <description>If the base object is a map, returns whether a call to #setValue will always fail. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If this resolver was constructed in read-only mode, this method will always return true. If a Map was created using java.util.Collections#unmodifiableMap, this method must return true. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable Map and query its runtime type to see if it matches the runtime type of the base object as a workaround.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>81</id>
      <description>Creates a new read/write MapELResolver.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="MapELResolver" return-type="MapELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>82</id>
      <description>Creates a new MapELResolver whose read-only status is determined by the given parameter.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="MapELResolver" return-type="MapELResolver">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>83</id>
      <description>If the base object is a map, attempts to set the value associated with the given key, as specified by the property argument. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException. If a Map was created using java.util.Collections#unmodifiableMap, this method must throw PropertyNotWritableException. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable Map and query its runtime type to see if it matches the runtime type of the base object as a workaround.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>84</id>
      <description>Evaluates the expression relative to the provided context, and returns information about the actual referenced method.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="getMethodInfo" return-type="jakarta.el.MethodInfo">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>86</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="MethodExpression" return-type="MethodExpression" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>87</id>
      <description>Returns the name of the method</description>
      <package>jakarta.el</package>
      <class-interface>MethodInfo</class-interface>
      <method name="getName" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>88</id>
      <description>Returns the parameter types of the method</description>
      <package>jakarta.el</package>
      <class-interface>MethodInfo</class-interface>
      <method name="getParamTypes" return-type="java.lang.Class[]" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>89</id>
      <description>Returns the return type of the method</description>
      <package>jakarta.el</package>
      <class-interface>MethodInfo</class-interface>
      <method name="getReturnType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>90</id>
      <description>Creates a new instance of MethodInfo with the given information.</description>
      <package>jakarta.el</package>
      <class-interface>MethodInfo</class-interface>
      <method name="MethodInfo" return-type="MethodInfo">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>91</id>
      <description>Creates a MethodNotFoundException with no detail message.</description>
      <package>jakarta.el</package>
      <class-interface>MethodNotFoundException</class-interface>
      <method name="MethodNotFoundException" return-type="MethodNotFoundException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>92</id>
      <description>Creates a MethodNotFoundException with the provided detail message.</description>
      <package>jakarta.el</package>
      <class-interface>MethodNotFoundException</class-interface>
      <method name="MethodNotFoundException" return-type="MethodNotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>93</id>
      <description>Creates a MethodNotFoundException with the given root cause.</description>
      <package>jakarta.el</package>
      <class-interface>MethodNotFoundException</class-interface>
      <method name="MethodNotFoundException" return-type="MethodNotFoundException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>94</id>
      <description>Creates a MethodNotFoundException with the given detail message and root cause.</description>
      <package>jakarta.el</package>
      <class-interface>MethodNotFoundException</class-interface>
      <method name="MethodNotFoundException" return-type="MethodNotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>95</id>
      <description>Creates a PropertyNotFoundException with no detail message.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotFoundException</class-interface>
      <method name="PropertyNotFoundException" return-type="PropertyNotFoundException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>96</id>
      <description>Creates a PropertyNotFoundException with the provided detail message.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotFoundException</class-interface>
      <method name="PropertyNotFoundException" return-type="PropertyNotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>97</id>
      <description>Creates a PropertyNotFoundException with the given root cause.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotFoundException</class-interface>
      <method name="PropertyNotFoundException" return-type="PropertyNotFoundException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>98</id>
      <description>Creates a PropertyNotFoundException with the given detail message and root cause.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotFoundException</class-interface>
      <method name="PropertyNotFoundException" return-type="PropertyNotFoundException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>99</id>
      <description>Creates a PropertyNotWritableException with no detail message.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotWritableException</class-interface>
      <method name="PropertyNotWritableException" return-type="PropertyNotWritableException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>100</id>
      <description>Creates a PropertyNotWritableException with the provided detail message.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotWritableException</class-interface>
      <method name="PropertyNotWritableException" return-type="PropertyNotWritableException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>101</id>
      <description>Creates a PropertyNotWritableException with the given root cause.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotWritableException</class-interface>
      <method name="PropertyNotWritableException" return-type="PropertyNotWritableException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>102</id>
      <description>Creates a PropertyNotWritableException with the given detail message and root cause.</description>
      <package>jakarta.el</package>
      <class-interface>PropertyNotWritableException</class-interface>
      <method name="PropertyNotWritableException" return-type="PropertyNotWritableException">
        <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>103</id>
      <description>If the base object is a ResourceBundle, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is a ResourceBundle, this method will always return String.class.</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>106</id>
      <description>If the base object is an instance of ResourceBundle, the provided property will first be coerced to a String. The Object returned by getObject on the base ResourceBundle will be returned. If the base is ResourceBundle, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>107</id>
      <description>If the base object is not null and an instanceof ResourceBundle, return true.</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>108</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="ResourceBundleELResolver" return-type="ResourceBundleELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>109</id>
      <description>If the base object is a ResourceBundle, throw a PropertyNotWritableException.</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>110</id>
      <description>Returns the type the result of the expression will be coerced to after evaluation.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getExpectedType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>111</id>
      <description>Evaluates the expression relative to the provided context, and returns the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. This is not always the same as getValue().getClass(). For example, in the case of an expression that references an array element, the getType method will return the element type of the array, which might be a superclass of the type of the actual element that is currently in the specified array element.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>112</id>
      <description>Evaluates the expression relative to the provided context, and returns the resulting value. The resulting value is automatically coerced to the type returned by getExpectedType(), which was provided to the ExpressionFactory when this expression was created.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>113</id>
      <description>Evaluates the expression relative to the provided context, and returns true if a call to #setValue will always fail.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>114</id>
      <description>Evaluates the expression relative to the provided context, and sets the result to the provided value.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>115</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="ValueExpression" return-type="ValueExpression" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>116</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>VariableMapper</class-interface>
      <method name="resolveVariable" return-type="jakarta.el.ValueExpression">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>117</id>
      <description>Assign a ValueExpression to an EL variable, replacing any previously assignment to the same variable. The assignment for the variable is removed if the expression is null.</description>
      <package>jakarta.el</package>
      <class-interface>VariableMapper</class-interface>
      <method name="setVariable" return-type="jakarta.el.ValueExpression">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.el.ValueExpression</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>118</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>VariableMapper</class-interface>
      <method name="VariableMapper" return-type="VariableMapper" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>40</id>
      <description>Sets the Locale for this instance. This method may be called by the party creating the instance, such as JavaServer Faces or JSP, to enable the EL implementation to provide localized messages to the user. If no Locale is set, the implementation must use the locale returned by Locale.getDefault( ).</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="setLocale" return-type="void">
        <parameters>
          <parameter>java.util.Locale</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>85</id>
      <description>If a String literal is specified as the expression, returns the String literal coerced to the expected return type of the method signature. An ELException is thrown if expectedReturnType is void or if the coercion of the String literal to the expectedReturnType yields an error (see Section "1.18 Type Conversion" of the EL specification). If not a String literal, evaluates the expression relative to the provided context, invokes the method that was found using the supplied parameters, and returns the result of the method invocation. Any parameters passed to this method is ignored if isLiteralText() or isParmetersProvided() is true.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:121</id>
      <description>if the given index is out of bounds for this array.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:122</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:123</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:124</id>
      <description>if the property could not be coerced into an integer.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:125</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:126</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:127</id>
      <description>if the given index is out of bounds for this array.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:128</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:129</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:130</id>
      <description>if the class of the specified element prevents it from being added to this array.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.ClassCastException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:131</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:132</id>
      <description>if the property could not be coerced into an integer, or if some aspect of the specified element prevents it from being added to this array.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:133</id>
      <description>if this resolver was constructed in read-only mode.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:134</id>
      <description>if the given index is out of bounds for this array.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:135</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ArrayELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:136</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:137</id>
      <description>if base is not null and the specified property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:138</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:139</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:140</id>
      <description>if base is not null and the specified property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:141</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:142</id>
      <description>If the base object is not null, invoke the method, with the given parameters on this bean. The return value from the method is returned. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. The provided method object will first be coerced to a String. The methods in the bean is then examined and an attempt will be made to select one for invocation. If no suitable can be found, a MethodNotFoundException is thrown. If the given paramTypes is not null, select the method with the given name and parameter types. Else select the method with the given name that has the same number of parameters. If there are more than one such method, the method selection process is undefined. Else select the method with the given name that takes a variable number of arguments. Note the resolution for overloaded methods will likely be clarified in a future version of the spec. The provide parameters are coerced to the correcponding parameter types of the method, and the method is then invoked.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:143</id>
      <description>if no suitable method can be found.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.MethodNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:144</id>
      <description>if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:145</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:146</id>
      <description>if base is not null and the specified property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:147</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:148</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:149</id>
      <description>if base is not null and the specified property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:150</id>
      <description>if this resolver was constructed in read-only mode, or if there is no setter for the property.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="false">
      <id>EL:JAVADOC:151</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:152</id>
      <description>Constructor</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="BeanNameELResolver" return-type="BeanNameELResolver">
        <parameters>
          <parameter>jakarta.el.BeanNameResolver</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:153</id>
      <description>Always returns String.class, since a bean name is a String.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:155</id>
      <description>If the base is null and the property is a name resolvable by the BeanNameResolver, return the type of the bean. If the name is resolvable by the BeanNameResolver, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:156</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:157</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:159</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:160</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:161</id>
      <description>If the base is null and the property is a name resolvable by the BeanNameResolver, attempts to determine if the bean is writable. If the name is resolvable by the BeanNameResolver, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:162</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:163</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:164</id>
      <description>If the base is null and the property is a name that is resolvable by the BeanNameResolver, the bean in the BeanNameResolver is set to the given value. If the name is resolvable by the BeanNameResolver, or if the BeanNameResolver allows creating a new bean, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>EL:JAVADOC:165</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:166</id>
      <description>if the BeanNameResolver does not allow the bean to be modified.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:167</id>
      <description>if an exception was thrown while attempting to set the bean with the given name. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:168</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanNameResolver</class-interface>
      <method name="BeanNameResolver" return-type="BeanNameResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:169</id>
      <description>Allow creating a bean of the given name if it does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameResolver</class-interface>
      <method name="canCreateBean" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:170</id>
      <description>Returns the bean known by its name.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameResolver</class-interface>
      <method name="getBean" 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>EL:JAVADOC:171</id>
      <description>Indicates if the bean of the given name is read-only or writable</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:172</id>
      <description>Sets a value to a bean of the given name. If the bean of the given name does not exist and if #canCreateBean is true, one is created with the given value.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameResolver</class-interface>
      <method name="setBeanValue" 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>EL:JAVADOC:173</id>
      <description>if the bean cannot be modified or created.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameResolver</class-interface>
      <method name="setBeanValue" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:174</id>
      <description>If the provided resolver is null.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="add" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELResolver</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:175</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:176</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:177</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:178</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:179</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:180</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:181</id>
      <description>Attemps to resolve and invoke the given method on the given base object by querying all component resolvers. If this resolver handles the given (base, method) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The invoke() method is called, passing in the provided context, base, method, paramTypes, and params. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by getValue() is returned by this method. If none of the component resolvers were able to perform this operation, the value null is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:182</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:183</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:184</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:185</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:186</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:187</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property is not writable.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:188</id>
      <description>if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:192</id>
      <description>Installs a Lambda argument map, in preparation for the evaluation of a Lambda expression. The arguments in the map will be in scope during the evaluation of the Lambda expression.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="enterLambdaScope" return-type="void">
        <parameters>
          <parameter>java.util.Map</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:193</id>
      <description>Exits the Lambda expression evaluation. The Lambda argument map that was previously installed is removed.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="exitLambdaScope" return-type="void" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:194</id>
      <description>if key is null.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getContext" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:195</id>
      <description>Retrieves the ImportHandler associated with this ELContext.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getImportHandler" return-type="jakarta.el.ImportHandler" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:196</id>
      <description>Retrieves the Lambda argument associated with a formal parameter. If the Lambda expression is nested within other Lambda expressions, the arguments for the current Lambda expression is first searched, and if not found, the arguments for the immediate nesting Lambda expression then searched, and so on.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getLambdaArgument" 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>EL:JAVADOC:198</id>
      <description>if key is null or contextObject is null.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="putContext" return-type="void">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:200</id>
      <description>Add an user defined ELResolver to the list of ELResolvers. Can be called multiple times. The new ELResolver is placed ahead of the default ELResolvers. The list of the ELResolvers added this way are ordered chronologically.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="addELResolver" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELResolver</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:202</id>
      <description>Define a bean in the local bean repository</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="defineBean" return-type="java.lang.Object">
        <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>EL:JAVADOC:203</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="ELManager" return-type="ELManager" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:204</id>
      <description>Return the ELContext used for parsing and evaluating EL expressions. If there is currently no ELContext, a default instance of StandardELContext is returned.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="getELContext" return-type="jakarta.el.StandardELContext" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:206</id>
      <description>Import a class. The imported class must be loadable from the classloader, at class resolution time.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="importClass" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:207</id>
      <description>if the name is not a full class name.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="importClass" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:208</id>
      <description>Import a package. At the class resolution time, the imported package name will be used to construct the full class name, which will then be used to load the class. Inherently, this is less efficient than importing a class.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="importPackage" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:209</id>
      <description>Maps a static method to an EL function.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="mapFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.reflect.Method</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:210</id>
      <description>Set the ELContext used for parsing and evaluating EL expressions. The supplied ELContext will not be modified, except for the context object map.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="setELContext" return-type="jakarta.el.ELContext">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:211</id>
      <description>Assign a ValueExpression to an EL variable, replacing any previous assignment to the same variable. The assignment for the variable is removed if the expression is null.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="setVariable" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>jakarta.el.ValueExpression</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:212</id>
      <description>Define a bean in a local bean repository, hiding other beans of the same name.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineBean" 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>EL:JAVADOC:213</id>
      <description>Define an EL function in the local function mapper.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineFunction" return-type="void">
        <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="active" testable="true">
      <id>EL:JAVADOC:215</id>
      <description>if the method (with or without the signature) is not a declared method of the class, or if the method signature is not valid.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>java.lang.NoSuchMethodException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:218</id>
      <description>Define an EL function in the local function mapper.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.reflect.Method</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:219</id>
      <description>if any of the arguements is null.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.reflect.Method</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:220</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="ELProcessor" return-type="ELProcessor" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:221</id>
      <description>Evaluates an EL expression.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="eval" 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>EL:JAVADOC:222</id>
      <description>Return the ELManager used for EL porcessing.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="getELManager" return-type="jakarta.el.ELManager" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:223</id>
      <description>Evaluates an EL expression, and coerces the result to the specified type.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="getValue" 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>EL:JAVADOC:224</id>
      <description>Sets an expression with a new value. The target expression is evaluated, up to the last property resolution, and the resultant (base, property) pair is set to the provided value.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="setValue" 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>EL:JAVADOC:225</id>
      <description>if one of the property resolutions failed because a specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:226</id>
      <description>if the final variable or property resolution failed because the specified variable or property is not writable.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:227</id>
      <description>if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:228</id>
      <description>Assign an EL expression to an EL variable. The expression is parsed, but not evaluated, and the parsed expression is mapped to the EL variable in the local variable map. Any previously assigned expression to the same variable will be replaced. If the expression is null, the variable will be removed.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="setVariable" return-type="void">
        <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>EL:JAVADOC:229</id>
      <description>Converts an object to a specific type. An ELException is thrown if an error occurs during the conversion.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:230</id>
      <description>thrown if errors occur.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:231</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:232</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:233</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:234</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:235</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:236</id>
      <description>Attemps to resolve and invoke the given method on the given base object. If this resolver handles the given (base, method) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. A default implementation is provided that returns null so that existing classes that extend ELResolver can continue to function.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:237</id>
      <description>if no suitable method can be found.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.MethodNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:238</id>
      <description>if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:239</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:240</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:241</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:242</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:243</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:244</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property is not writable.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:245</id>
      <description>if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:251</id>
      <description>thrown if an error results from applying the conversion rules.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="coerceToType" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:252</id>
      <description>Thrown if there are syntactical errors in the provided expression.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createMethodExpression" return-type="jakarta.el.MethodExpression">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:253</id>
      <description>if paramTypes is null.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createMethodExpression" return-type="jakarta.el.MethodExpression">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Class[]</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:254</id>
      <description>Thrown if expectedType is null.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createValueExpression" return-type="jakarta.el.ValueExpression">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:255</id>
      <description>Thrown if there are syntactical errors in the provided expression.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createValueExpression" return-type="jakarta.el.ValueExpression">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:256</id>
      <description>Thrown if expectedType is null.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="createValueExpression" return-type="jakarta.el.ValueExpression">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:258</id>
      <description>Creates a new instance of a ExpressionFactory. This method uses the following ordered lookup procedure to determine the ExpressionFactory implementation class to load: Use the Services API (as detailed in the JAR specification). If a resource with the name of META-INF/services/jakarta.el.ExpressionFactory exists, then its first line, if present, is used as the UTF-8 encoded name of the implementation class. Use the properties file "lib/el.properties" in the JRE directory. If this file exists and it is readable by the java.util.Properties.load(InputStream) method, and it contains an entry whose key is "jakarta.el.ExpressionFactory", then the value of that entry is used as the name of the implementation class. Use the jakarta.el.ExpressionFactory system property. If a system property with this name is defined, then its value is used as the name of the implementation class. Use a platform default implementation.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="newInstance" return-type="jakarta.el.ExpressionFactory" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:259</id>
      <description>Create a new instance of a ExpressionFactory, with optional properties. This method uses the same lookup procedure as the one used in newInstance(). If the argument properties is not null, and if the implementation contains a constructor with a single parameter of type java.util.Properties, then the constructor is used to create the instance. Properties are optional and can be ignored by an implementation. The name of a property should start with "jakarta.el." The following are some suggested names for properties. jakarta.el.cacheSize</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="newInstance" return-type="jakarta.el.ExpressionFactory">
        <parameters>
          <parameter>java.util.Properties</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:260</id>
      <description>Adds a static method that can be used as a function.</description>
      <package>jakarta.el</package>
      <class-interface>FunctionMapper</class-interface>
      <method name="mapFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.reflect.Method</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:262</id>
      <description>Import a class.</description>
      <package>jakarta.el</package>
      <class-interface>ImportHandler</class-interface>
      <method name="importClass" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:263</id>
      <description>if the name is not a full class name.</description>
      <package>jakarta.el</package>
      <class-interface>ImportHandler</class-interface>
      <method name="importClass" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:264</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ImportHandler</class-interface>
      <method name="ImportHandler" return-type="ImportHandler" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:265</id>
      <description>Import all the classes in a package.</description>
      <package>jakarta.el</package>
      <class-interface>ImportHandler</class-interface>
      <method name="importPackage" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:266</id>
      <description>Resolve a class name from its imports.</description>
      <package>jakarta.el</package>
      <class-interface>ImportHandler</class-interface>
      <method name="resolve" return-type="java.lang.Class">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:273</id>
      <description>if not enough arguments are provided</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:274</id>
      <description>Creates a new LambdaExpression.</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="LambdaExpression" return-type="LambdaExpression">
        <parameters>
          <parameter>java.util.List</parameter>
          <parameter>jakarta.el.ValueExpression</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:275</id>
      <description>if the given index is out of bounds for this list.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:276</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:277</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:278</id>
      <description>if the property could not be coerced into an integer.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:279</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:280</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:281</id>
      <description>if the given index is out of bounds for this list.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:282</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:283</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:284</id>
      <description>if the class of the specified element prevents it from being added to this list.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.ClassCastException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:285</id>
      <description>if context is null, or if the value is null and this List does not support null elements.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:286</id>
      <description>if the property could not be coerced into an integer, or if some aspect of the specified element prevents it from being added to this list.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:287</id>
      <description>if this resolver was constructed in read-only mode, or if the set operation is not supported by the underlying list.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:288</id>
      <description>if the given index is out of bounds for this list.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:289</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ListELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:290</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:291</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:292</id>
      <description>if the key is of an inappropriate type for this map (optionally thrown by the underlying Map).</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.ClassCastException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:293</id>
      <description>if context is null, or if the key is null and this map does not permit null keys (the latter is optionally thrown by the underlying Map).</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:294</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:295</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:296</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:297</id>
      <description>if the class of the specified key or value prevents it from being stored in this map.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.ClassCastException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:298</id>
      <description>if context is null, or if this map does not permit null keys or values, and the specified key or value is null.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:299</id>
      <description>if some aspect of this key or value prevents it from being stored in this map.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.IllegalArgumentException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:300</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:301</id>
      <description>if this resolver was constructed in read-only mode, or if the put operation is not supported by the underlying map.</description>
      <package>jakarta.el</package>
      <class-interface>MapELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:302</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="getMethodInfo" return-type="jakarta.el.MethodInfo">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:303</id>
      <description>if one of the property resolutions failed because a specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="getMethodInfo" return-type="jakarta.el.MethodInfo">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:304</id>
      <description>if no suitable method can be found.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="getMethodInfo" return-type="jakarta.el.MethodInfo">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.MethodNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:305</id>
      <description>if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="getMethodInfo" return-type="jakarta.el.MethodInfo">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:306</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:307</id>
      <description>if one of the property resolutions failed because a specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:308</id>
      <description>if no suitable method can be found.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.MethodNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:309</id>
      <description>if a String literal is specified and expectedReturnType of the MethodExpression is void or if the coercion of the String literal to the expectedReturnType yields an error (see Section "1.18 Type Conversion").</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:310</id>
      <description>if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:311</id>
      <description>Return whether this MethodExpression was created with parameters. This method must return true if and only if parameters are specified in the EL, using the expr-a.expr-b(...) syntax.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="isParametersProvided" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:312</id>
      <description>Use isParametersProvided instead.</description>
      <package>jakarta.el</package>
      <class-interface>MethodExpression</class-interface>
      <method name="isParmetersProvided" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:313</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:314</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:315</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:316</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:317</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:318</id>
      <description>Always thrown if base is an instance of ReasourceBundle.</description>
      <package>jakarta.el</package>
      <class-interface>ResourceBundleELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:319</id>
      <description>Add a custom ELResolver to the context. The list of the custom ELResolvers will be accessed in the order they are added. A custom ELResolver added to the context cannot be removed.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="addELResolver" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELResolver</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:320</id>
      <description>Returns the context object associated with the given key. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to retrieve the context with the given key from the collection. By convention, the object returned will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</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>EL:JAVADOC:321</id>
      <description>if key is null.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="getContext" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:323</id>
      <description>Construct (if needed) and return a default FunctionMapper.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="getFunctionMapper" return-type="jakarta.el.FunctionMapper" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:325</id>
      <description>Construct (if needed) and return a default VariableMapper() {</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="getVariableMapper" return-type="jakarta.el.VariableMapper" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:326</id>
      <description>Associates a context object with this ELContext. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to add a context object to that collection. By convention, the contextObject will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="putContext" return-type="void">
        <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>EL:JAVADOC:327</id>
      <description>if key is null or contextObject is null.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="putContext" return-type="void">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:329</id>
      <description>Construct a StandardELContext from another ELContext.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="StandardELContext" return-type="StandardELContext">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:330</id>
      <description>Returns the type of the property. Always returns String.class, since a field name is a String.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:332</id>
      <description>Returns the type of a static field. If the base object is an instance of ELClassand the property is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. If the property is the string "class", returns java.lang.Class.class. If the property string is a public static field of class specified in ELClass, return the type of the static field.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:333</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:334</id>
      <description>if field is not a public static filed of the class, or if the field is inacessible.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:336</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:337</id>
      <description>if the specified class does not exist, or if the field is not a public static filed of the class, or if the field is inacessible.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:339</id>
      <description>if no suitable method can be found.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.MethodNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:340</id>
      <description>if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:341</id>
      <description>Inquires whether the static field is writable. If the base object is an instance of ELClassand the property is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. Always returns a true because writing to a static field is not allowed.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:342</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:343</id>
      <description>Attempts to write to a static field. If the base object is an instance of ELClassand the property is String, a PropertyNotWritableException will always be thrown, because writing to a static field is not allowed.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>EL:JAVADOC:344</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:345</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:346</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="StaticFieldELResolver" return-type="StaticFieldELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:347</id>
      <description>Converts an object to a specific type. An ELException is thrown if an error occurs during the conversion.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:348</id>
      <description>thrown if errors occur.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:349</id>
      <description>Returns the most general type that this resolver accepts for the property argument, given a base object. One use for this method is to assist tools in auto-completion. This assists tools in auto-completion and also provides a way to express that the resolver accepts a primitive value, such as an integer index into an array. For example, the ArrayELResolver will accept any int as a property, so the return value would be Integer.class.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getCommonPropertyType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:351</id>
      <description>For a given base and property, attempts to identify the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. This is not always the same as getValue().getClass(). For example, in the case of an ArrayELResolver, the getType method will return the element type of the array, which might be a superclass of the type of the actual element that is currently in the specified array element.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:352</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:353</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:354</id>
      <description>Attempts to resolve the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:355</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:356</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:357</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:358</id>
      <description>For a given base and property, attempts to determine whether a call to #setValue will always fail. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:359</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:360</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:361</id>
      <description>if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:362</id>
      <description>Attempts to set the value of the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</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>EL:JAVADOC:363</id>
      <description>if context is null</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:364</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:365</id>
      <description>if the given (base, property) pair is handled by this ELResolver but the specified variable or property is not writable.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:366</id>
      <description>if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:367</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>TypeConverter</class-interface>
      <method name="TypeConverter" return-type="TypeConverter" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:368</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:369</id>
      <description>if one of the property resolutions failed because a specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:370</id>
      <description>if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getType" return-type="java.lang.Class">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:371</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:372</id>
      <description>if one of the property resolutions failed because a specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:373</id>
      <description>if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:374</id>
      <description>Returns a ValueReference for this expression instance.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="getValueReference" return-type="jakarta.el.ValueReference">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:375</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:376</id>
      <description>if one of the property resolutions failed because a specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:377</id>
      <description>if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. * @throws NullPointerException if context is null</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="isReadOnly" return-type="boolean">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:378</id>
      <description>if context is null.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:379</id>
      <description>if one of the property resolutions failed because a specified variable or property does not exist or is not readable.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:380</id>
      <description>if the final variable or property resolution failed because the specified variable or property is not writable.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.PropertyNotWritableException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:381</id>
      <description>if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available.</description>
      <package>jakarta.el</package>
      <class-interface>ValueExpression</class-interface>
      <method name="setValue" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:382</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ValueReference</class-interface>
      <method name="getBase" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:383</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ValueReference</class-interface>
      <method name="getProperty" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:384</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>ValueReference</class-interface>
      <method name="ValueReference" return-type="ValueReference">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- MODIFIED ASSERTIONS LISTED BELOW -->
    <!-- The original assertion is followed by the modified version -->
    <!-- of the assertion. Users must edit the file to verify -->
    <!-- that the modified assertion is correct. User should then -->
    <!-- delete the original assertion or use the style sheet -->
    <!-- that removes them automatically.  The original and modified -->
    <!-- assertions differ by their IDs, notice the original assertion -->
    <!-- now ends with "__OLD" -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>41</id>
      <description>Called to indicate that a ELResolver has successfully resolved a given (base, property) pair. Use #setPropertyResolved(Object, Object) if resolved is true and to notify EvaluationListeners. The CompositeELResolver checks this property to determine whether it should consider or skip other component resolvers.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="setPropertyResolved" return-type="void">
        <parameters>
          <parameter>boolean</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>61</id>
      <description>Coerces an object to a specific type according to the EL type conversion rules. The custom type conversions in the ELResolvers are not considered. An ELException is thrown if an error results from applying the conversion rules.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="coerceToType" return-type="java.lang.Object">
        <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>EL:JAVADOC:158</id>
      <description>If the base object is null and the property is a name that is resolvable by the BeanNameResolver, returns the value resolved by the BeanNameResolver. If name is resolved by the BeanNameResolver, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:199</id>
      <description>Register a BeanNameResolver. Construct a BeanNameELResolver with the BeanNameResolver and add it to the list of ELResolvers. Once registered, the BeanNameResolver cannot be removed.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="addBeanNameResolver" return-type="void">
        <parameters>
          <parameter>jakarta.el.BeanNameResolver</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:205</id>
      <description>Return the ExpressionFactory instance used for EL evaluations.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="getExpressionFactory" return-type="jakarta.el.ExpressionFactory" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:214</id>
      <description>if the specified class does not exists.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>java.lang.ClassNotFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:216</id>
      <description>if any of the arguments is null.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:272</id>
      <description>Invoke the encapsulated Lambda expression. The supplied arguments are matched, in the same order, to the formal parameters. If there are more arguments than the formal parameters, the extra arguments are ignored. If there are less arguments than the formal parameters, an ELException is thrown. The actual Lambda arguments are added to the ELContext and are available during the evaluation of the Lambda expression. They are removed after the evaluation.</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:322</id>
      <description>Construct (if needed) and return a default ELResolver. Retrieves the ELResolver associated with this context. This is a CompositeELResover consists of an ordered list of ELResolvers. A BeanNameELResolver for beans defined locally Any custom ELResolvers An ELResolver supporting the collection operations A StaticFieldELResolver for resolving static fields A MapELResolver for resolving Map properties A ResourceBundleELResolver for resolving ResourceBundle properties A ListELResolver for resolving List properties An ArrayELResolver for resolving array properties A BeanELResolver for resolving bean properties</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="getELResolver" return-type="jakarta.el.ELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:335</id>
      <description>Returns the value of a static field. If the base object is an instance of ELClass and the property is String, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If the property is the string "class", return the java.lang.Class instance of the class specified in ELClass. If the property is a public static field of class specified in ELClass, return the value of the static field. An Enum constant is a public static field of an Enum object, and is a special case of this.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="getValue" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</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>EL:JAVADOC:338</id>
      <description>Invokes a public static method or the constructor for a class. If the base object is an instance of ELClass and the method is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Invoke the public static method specified by method. The process involved in the method selection is the same as that used in BeanELResolver. As a special case, if the name of the method is "&lt;init&gt;", the constructor for the class will be invoked.</description>
      <package>jakarta.el</package>
      <class-interface>StaticFieldELResolver</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class[]</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- REMOVED ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:17</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanELResolver.BeanProperties</class-interface>
      <method name="BeanELResolver.BeanProperties" return-type="BeanELResolver.BeanProperties">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:18</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanELResolver.BeanProperties</class-interface>
      <method name="getBeanProperty" return-type="jakarta.el.BeanELResolver.BeanELResolver.BeanProperty">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:19</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanELResolver.BeanProperty</class-interface>
      <method name="BeanELResolver.BeanProperty" return-type="BeanELResolver.BeanProperty">
        <parameters>
          <parameter>java.lang.Class</parameter>
          <parameter>java.beans.PropertyDescriptor</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:20</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanELResolver.BeanProperty</class-interface>
      <method name="getPropertyType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:21</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanELResolver.BeanProperty</class-interface>
      <method name="getReadMethod" return-type="java.lang.reflect.Method" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:22</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanELResolver.BeanProperty</class-interface>
      <method name="getWriteMethod" return-type="java.lang.reflect.Method" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:23</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>BeanELResolver.BeanProperty</class-interface>
      <method name="isReadOnly" return-type="boolean" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:119</id>
      <description>Creates a new instance of a ExpressionFactory. This method uses the following ordered lookup procedure to determine the ExpressionFactory implementation class to load: Use the Services API (as detailed in the JAR specification). If a resource with the name of META-INF/services/jakarta.el.ExpressionFactory exists, then its first line, if present, is used as the UTF-8 encoded name of the implementation class. Use the properties file "lib/el.properties" in the JRE directory. If this file exists and it is readable by the java.util.Properties.load(InputStream) method, and it contains an entry whose key is "jakarta.el.ExpressionFactory", then the value of that entry is used as the name of the implementation class. Use the jakarta.el.ExpressionFactory system property. If a system property with this name is defined, then its value is used as the name of the implementation class. Use a platform default implementation.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="newInstance" return-type="ExpressionFactory" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:120</id>
      <description>Create a new instance of a ExpressionFactory, with optional properties. This method uses the same lookup procedure as the one used in newInstance(). If the argument properties is not null, and if the implementation contains a constructor with a single parameter of type java.util.Properties, then the constructor is used to create the instance. Properties are optional and can be ignored by an implementation. The name of a property should start with "jakarta.el." The following are some suggested names for properties. jakarta.el.cacheSize</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="newInstance" return-type="ExpressionFactory">
        <parameters>
          <parameter>java.util.Properties</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:189</id>
      <description>Constructor</description>
      <package>jakarta.el</package>
      <class-interface>ELClass</class-interface>
      <method name="ELClass" return-type="ELClass">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:190</id>
      <description>Returns the class name for the specified class.</description>
      <package>jakarta.el</package>
      <class-interface>ELClass</class-interface>
      <method name="getClassName" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:191</id>
      <description>Registers a listener to the ELContext.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="addListener" return-type="void">
        <parameters>
          <parameter>java.util.EventListener</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:197</id>
      <description>Returns the list of registered listeners.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getListeners" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:201</id>
      <description>Register a listener. Used only for EvaluationListeners in 3.0, but possibly to used for other listeners.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="addListener" return-type="void">
        <parameters>
          <parameter>java.util.EventListener</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:217</id>
      <description>if the specified class does not exists.</description>
      <package>jakarta.el</package>
      <class-interface>ELProcessor</class-interface>
      <method name="defineFunction" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
        <throw>ClassNoFoundException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:246</id>
      <description>Constructor</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationEvent</class-interface>
      <method name="EvaluationEvent" return-type="EvaluationEvent">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:247</id>
      <description>Retruns the ELContext used in the evaluation of the expression.</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationEvent</class-interface>
      <method name="getELContext" return-type="jakarta.el.ELContext" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:248</id>
      <description>Returns the original expression String</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationEvent</class-interface>
      <method name="getExpressionString" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:249</id>
      <description>Receives notification after an EL expression is evaluated</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationListener</class-interface>
      <method name="afterEvaluation" return-type="void">
        <parameters>
          <parameter>jakarta.el.EvaluationEvent</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:250</id>
      <description>Receives notification before an EL expression is evaluated</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationListener</class-interface>
      <method name="beforeEvaluation" return-type="void">
        <parameters>
          <parameter>jakarta.el.EvaluationEvent</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:257</id>
      <description>Retrieves an ELResolver that implements the Query Operators as described in Chapter 2 of the specification. This ELResolver relsoves the method invocation on the pair (base, property) when base is an Iterable and property is the name of the operator. Therefore, the operators behave like built-in methods of Iterables. See EL.2 for detailed descriptions of these operators, the arguments, and the return values.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="getQueryOperatorELResolver" return-type="jakarta.el.ELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:261</id>
      <description>Return the key for the collection</description>
      <package>jakarta.el</package>
      <class-interface>Grouping</class-interface>
      <method name="getKey" return-type="java.lang.Object" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="false">
      <modified />
      <id>EL:JAVADOC:267</id>
      <description>Creates a InvalidOperationException with no detail message.</description>
      <package>jakarta.el</package>
      <class-interface>InvalidOperationException</class-interface>
      <method name="InvalidOperationException" return-type="InvalidOperationException" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="false">
      <modified />
      <id>EL:JAVADOC:268</id>
      <description>Creates a InvalidOperationException with the provided detail message.</description>
      <package>jakarta.el</package>
      <class-interface>InvalidOperationException</class-interface>
      <method name="InvalidOperationException" return-type="InvalidOperationException">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="false">
      <modified />
      <id>EL:JAVADOC:269</id>
      <description>Creates a InvalidOperationException with the given root cause.</description>
      <package>jakarta.el</package>
      <class-interface>InvalidOperationException</class-interface>
      <method name="InvalidOperationException" return-type="InvalidOperationException">
        <parameters>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="false">
      <modified />
      <id>EL:JAVADOC:270</id>
      <description>Creates a InvalidOperationException with the given detail message and root cause.</description>
      <package>jakarta.el</package>
      <class-interface>InvalidOperationException</class-interface>
      <method name="InvalidOperationException" return-type="InvalidOperationException">
        <parameters>
          <parameter>java.lang.String</parameter>
          <parameter>java.lang.Throwable</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:271</id>
      <description>Retrieves the formal parameters of the Lambda expression</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="getFormalParameters" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:324</id>
      <description>Construct (if need) and return an ImportHandler</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="getImportHandler" return-type="jakarta.el.ImportHandler" />
    </assertion>
    <assertion required="true" impl-spec="false" status="removed" testable="true">
      <modified />
      <id>EL:JAVADOC:328</id>
      <description>Construct a default ELContext for a stand-alone environment.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="StandardELContext" return-type="StandardELContext">
        <parameters>
          <parameter>jakarta.el.ELResolver</parameter>
        </parameters>
      </method>
    </assertion>
    <!-- ********************************************************************************** -->
    <!-- ********************************************************************************** -->
    <!-- NEW ASSERTIONS LISTED BELOW -->
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:385</id>
      <description>Returns whether the given name is resolved by the BeanNameResolver</description>
      <package>jakarta.el</package>
      <class-interface>BeanNameResolver</class-interface>
      <method name="isNameResolved" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:386</id>
      <description>Converts an object to a specific type. An ELException is thrown if an error occurs during the conversion.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <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>EL:JAVADOC:387</id>
      <description>thrown if errors occur.</description>
      <package>jakarta.el</package>
      <class-interface>CompositeELResolver</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:388</id>
      <description>Constructor</description>
      <package>jakarta.el</package>
      <class-interface>ELClass</class-interface>
      <method name="ELClass" return-type="ELClass">
        <parameters>
          <parameter>java.lang.Class</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:389</id>
      <description>Returns the Class instance</description>
      <package>jakarta.el</package>
      <class-interface>ELClass</class-interface>
      <method name="getKlass" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:390</id>
      <description>Registers an evaluation listener to the ELContext.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="addEvaluationListener" return-type="void">
        <parameters>
          <parameter>jakarta.el.EvaluationListener</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:391</id>
      <description>Converts an object to a specific type. If a custom converter in the ELResolver handles this conversion, it is used. Otherwise the standard coercions is applied. An ELException is thrown if an error occurs during the conversion.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <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>EL:JAVADOC:392</id>
      <description>thrown if errors occur.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="convertToType" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Class</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:393</id>
      <description>Returns the list of registered evaluation listeners.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="getEvaluationListeners" return-type="java.util.List" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:394</id>
      <description>Inquires if the name is a LambdaArgument</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="isLambdaArgument" return-type="boolean">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:395</id>
      <description>Notifies the listeners after an EL expression is evaluated</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="notifyAfterEvaluation" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:396</id>
      <description>Notifies the listeners before an EL expression is evaluated</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="notifyBeforeEvaluation" return-type="void">
        <parameters>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:397</id>
      <description>Notifies the listeners when the (base, property) pair is resolved</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="notifyPropertyResolved" 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">
      <modified />
      <id>EL:JAVADOC:398</id>
      <description>Called to indicate that a ELResolver has successfully resolved a given (base, property) pair and to notify the EvaluationListeners. The CompositeELResolver checks this property to determine whether it should consider or skip other component resolvers.</description>
      <package>jakarta.el</package>
      <class-interface>ELContext</class-interface>
      <method name="setPropertyResolved" 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">
      <modified />
      <id>EL:JAVADOC:399</id>
      <description>Register an evaluation listener.</description>
      <package>jakarta.el</package>
      <class-interface>ELManager</class-interface>
      <method name="addEvaluationListener" return-type="void">
        <parameters>
          <parameter>jakarta.el.EvaluationListener</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:400</id>
      <description>Receives notification after an EL expression is evaluated</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationListener</class-interface>
      <method name="afterEvaluation" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:401</id>
      <description>Receives notification before an EL expression is evaluated</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationListener</class-interface>
      <method name="beforeEvaluation" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.String</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:402</id>
      <description />
      <package>jakarta.el</package>
      <class-interface>EvaluationListener</class-interface>
      <method name="EvaluationListener" return-type="EvaluationListener" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:403</id>
      <description>Receives notification when the (base, property) pair is resolved</description>
      <package>jakarta.el</package>
      <class-interface>EvaluationListener</class-interface>
      <method name="propertyResolved" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object</parameter>
          <parameter>java.lang.Object</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:404</id>
      <description>Retrieve a function map containing a pre-configured function mapping. It must include the following functions. linq:range linq:repeat linq:_empty</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="getInitFunctionMap" return-type="java.util.Map" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:405</id>
      <description>Retrieves an ELResolver that implements the operations in collections. This ELResolver resolves the method invocation on the pair (base, property) when base is a Collection or a Map, and property is the name of the operation. See EL.2 for detailed descriptions of these operators, their arguments, and return values.</description>
      <package>jakarta.el</package>
      <class-interface>ExpressionFactory</class-interface>
      <method name="getStreamELResolver" return-type="jakarta.el.ELResolver" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:406</id>
      <description>is elContext is null</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>java.lang.NullPointerException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:407</id>
      <description>Invoke the encapsulated Lambda expression. The supplied arguments are matched, in the same order, to the formal parameters. If there are more arguments than the formal parameters, the extra arguments are ignored. If there are less arguments than the formal parameters, an ELException is thrown. The actual Lambda arguments are added to the ELContext and are available during the evaluation of the Lambda expression. They are removed after the evaluation. The ELContext set by LambdaExpression#setELContext is used in the evaluation of the lambda Expression.</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:408</id>
      <description>if not enough arguments are provided</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="invoke" return-type="java.lang.Object">
        <parameters>
          <parameter>java.lang.Object[]</parameter>
        </parameters>
        <throw>jakarta.el.ELException</throw>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:409</id>
      <description>Set the ELContext to use in evaluating the LambdaExpression. The ELContext must to be set prior to the invocation of the LambdaExpression, unless it is supplied with LambdaExpression#invoke.</description>
      <package>jakarta.el</package>
      <class-interface>LambdaExpression</class-interface>
      <method name="setELContext" return-type="void">
        <parameters>
          <parameter>jakarta.el.ELContext</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <modified />
      <id>EL:JAVADOC:410</id>
      <description>Construct a default ELContext for a stand-alone environment.</description>
      <package>jakarta.el</package>
      <class-interface>StandardELContext</class-interface>
      <method name="StandardELContext" return-type="StandardELContext">
        <parameters>
          <parameter>jakarta.el.ExpressionFactory</parameter>
        </parameters>
      </method>
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:411</id>
      <description>Returns the name of the method</description>
      <package>jakarta.el</package>
      <class-interface>MethodInfo</class-interface>
      <method name="getName" return-type="java.lang.String" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:412</id>
      <description>Returns the return type of the method</description>
      <package>jakarta.el</package>
      <class-interface>MethodInfo</class-interface>
      <method name="getReturnType" return-type="java.lang.Class" />
    </assertion>
    <assertion required="true" impl-spec="false" status="active" testable="true">
      <id>EL:JAVADOC:413</id>
      <description>Returns the parameter types of the method</description>
      <package>jakarta.el</package>
      <class-interface>MethodInfo</class-interface>
      <method name="getParamTypes" return-type="java.lang.Class[]" />
    </assertion>
  </assertions>
</javadoc>

