Package Summary Overview Summary

### class:MethodTypeDesc [NONE]
All Superinterfaces: `ConstantDesc`, `TypeDescriptor`, `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>`
    public interface MethodTypeDesc
    extends ConstantDesc, TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>
A nominal descriptor for a MethodType constant. API Note: In the future, if the Java language permits, MethodTypeDesc may become a `sealed` interface, which would prohibit subclassing except by explicitly permitted types. Non-platform classes should not implement MethodTypeDesc directly. Since: 12

### method:ofDescriptor(java.lang.String) [NONE]
### ofDescriptor static MethodTypeDesc ofDescriptor?(String descriptor) Creates a MethodTypeDesc given a method descriptor string. Parameters: `descriptor` - a method descriptor string Returns: a MethodTypeDesc describing the desired method type Throws: `NullPointerException` - if the argument is `null` `IllegalArgumentException` - if the descriptor string is not a valid method descriptor

### method:of(java.lang.constant.ClassDesc,java.lang.constant.ClassDesc...) [NONE]
### of static MethodTypeDesc of?(ClassDesc returnDesc, ClassDesc... paramDescs) Returns a MethodTypeDesc given the return type and parameter types. Parameters: `returnDesc` - a ClassDesc describing the return type `paramDescs` - ClassDescs describing the argument types Returns: a MethodTypeDesc describing the desired method type Throws: `NullPointerException` - if any argument or its contents are `null` `IllegalArgumentException` - if any element of `paramDescs` is a `ClassDesc` for `void`

### method:returnType() [NONE]
### returnType ClassDesc returnType() Gets the return type of the method type described by this MethodTypeDesc. Specified by: `returnType` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Returns: a `ClassDesc` describing the return type of the method type

### method:parameterCount() [NONE]
### parameterCount int parameterCount() Returns the number of parameters of the method type described by this MethodTypeDesc. Specified by: `parameterCount` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Returns: the number of parameters

### method:parameterType(int) [NONE]
### parameterType ClassDesc parameterType?(int index) Returns the parameter type of the `index`'th parameter of the method type described by this MethodTypeDesc. Specified by: `parameterType` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Parameters: `index` - the index of the parameter to retrieve Returns: a `ClassDesc` describing the desired parameter type Throws: `IndexOutOfBoundsException` - if the index is outside the half-open range {[0, parameterCount())}

### method:parameterList() [NONE]
### parameterList List<ClassDesc> parameterList() Returns the parameter types as an immutable `List`. Specified by: `parameterList` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Returns: a `List` of `ClassDesc` describing the parameter types

### method:parameterArray() [NONE]
### parameterArray ClassDesc[] parameterArray() Returns the parameter types as an array. Specified by: `parameterArray` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Returns: an array of `ClassDesc` describing the parameter types

### method:changeReturnType(java.lang.constant.ClassDesc) [NONE]
### changeReturnType MethodTypeDesc changeReturnType?(ClassDesc returnType) Returns a MethodTypeDesc that is identical to this one, except with the specified return type. Specified by: `changeReturnType` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Parameters: `returnType` - a `ClassDesc` describing the new return type Returns: a MethodTypeDesc describing the desired method type Throws: `NullPointerException` - if the argument is `null`

### method:changeParameterType(int,java.lang.constant.ClassDesc) [NONE]
### changeParameterType MethodTypeDesc changeParameterType?(int index, ClassDesc paramType) Returns a MethodTypeDesc that is identical to this one, except that a single parameter type has been changed to the specified type. Specified by: `changeParameterType` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Parameters: `index` - the index of the parameter to change `paramType` - a `ClassDesc` describing the new parameter type Returns: a MethodTypeDesc describing the desired method type Throws: `NullPointerException` - if any argument is `null` `IndexOutOfBoundsException` - if the index is outside the half-open range {[0, parameterCount)}

### method:dropParameterTypes(int,int) [NONE]
### dropParameterTypes MethodTypeDesc dropParameterTypes?(int start, int end) Returns a MethodTypeDesc that is identical to this one, except that a range of parameter types have been removed. Specified by: `dropParameterTypes` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Parameters: `start` - the index of the first parameter to remove `end` - the index after the last parameter to remove Returns: a MethodTypeDesc describing the desired method type Throws: `IndexOutOfBoundsException` - if `start` is outside the half-open range `[0, parameterCount)` , or `end` is outside the closed range `[0, parameterCount]` , or if `start > end`

### method:insertParameterTypes(int,java.lang.constant.ClassDesc...) [NONE]
### insertParameterTypes MethodTypeDesc insertParameterTypes?(int pos, ClassDesc... paramTypes) Returns a MethodTypeDesc that is identical to this one, except that a range of additional parameter types have been inserted. Specified by: `insertParameterTypes` in interface `TypeDescriptor.OfMethod<ClassDesc,?MethodTypeDesc>` Parameters: `pos` - the index at which to insert the first inserted parameter `paramTypes` - `ClassDesc`s describing the new parameter types to insert Returns: a MethodTypeDesc describing the desired method type Throws: `NullPointerException` - if any argument or its contents are `null` `IndexOutOfBoundsException` - if `pos` is outside the closed range {[0, parameterCount]} `IllegalArgumentException` - if any element of `paramTypes` is a `ClassDesc` for `void`

### method:descriptorString() [NONE]
### descriptorString default String descriptorString() Returns the method type descriptor string. Specified by: `descriptorString` in interface `TypeDescriptor` Returns: the method type descriptor string

### method:displayDescriptor() [NONE]
### displayDescriptor default String displayDescriptor() Returns a human-readable descriptor for this method type, using the canonical names for parameter and return types. Returns: the human-readable descriptor for this method type

### method:equals(java.lang.Object) [NONE]
### equals boolean equals?(Object o) Compares the specified object with this descriptor for equality. Returns `true` if and only if the specified object is also a MethodTypeDesc both have the same arity, their return types are equal, and each pair of corresponding parameter types are equal. Overrides: `equals` in class `Object` Parameters: `o` - the other object Returns: whether this descriptor is equal to the other object See Also: `Object.hashCode()`, `HashMap`