src/java.base/share/classes/java/lang/invoke/TypeDescriptor.java
author vromero
Thu, 13 Dec 2018 10:35:09 -0500
changeset 53019 4ddd3c410a85
parent 52914 4fa75d8ad418
permissions -rw-r--r--
8215300: additional changes to constants API Reviewed-by: goetz
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52914
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     1
/*
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     2
 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     4
 *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    10
 *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    15
 * accompanied this code).
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    16
 *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    20
 *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    23
 * questions.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    24
 */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    25
package java.lang.invoke;
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    26
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    27
import java.util.List;
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    28
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    29
/**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    30
 * An entity that has a field or method type descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    31
 *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    32
 * @jvms 4.3.2 Field Descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    33
 * @jvms 4.3.3 Method Descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    34
 *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    35
 * @since 12
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    36
 */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    37
public interface TypeDescriptor {
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    38
    /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    39
     * Return the type descriptor string for this instance, which must be either
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    40
     * a field type descriptor (JVMS 4.3.2) or method type descriptor (JVMS 4.3.3).
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    41
     *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    42
     * @return the type descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    43
     * @jvms 4.3.2 Field Descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    44
     * @jvms 4.3.3 Method Descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    45
     */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    46
    String descriptorString();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    47
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    48
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    49
    /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    50
     * An entity that has a field type descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    51
     *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    52
     * @param <F> the class implementing {@linkplain TypeDescriptor.OfField}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    53
     * @jvms 4.3.2 Field Descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    54
     * @since 12
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    55
     */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    56
    interface OfField<F extends TypeDescriptor.OfField<F>> extends TypeDescriptor {
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    57
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    58
         * Does this field descriptor describe an array type?
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    59
         * @return whether this field descriptor describes an array type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    60
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    61
        boolean isArray();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    62
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    63
        /**
53019
4ddd3c410a85 8215300: additional changes to constants API
vromero
parents: 52914
diff changeset
    64
         * Does this field descriptor describe a primitive type (including void.)
4ddd3c410a85 8215300: additional changes to constants API
vromero
parents: 52914
diff changeset
    65
         *
52914
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    66
         * @return whether this field descriptor describes a primitive type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    67
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    68
        boolean isPrimitive();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    69
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    70
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    71
         * If this field descriptor describes an array type, return
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    72
         * a descriptor for its component type, otherwise return {@code null}.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    73
         * @return the component type, or {@code null} if this field descriptor does
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    74
         * not describe an array type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    75
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    76
        F componentType();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    77
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    78
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    79
         * Return a descriptor for the array type whose component type is described by this
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    80
         * descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    81
         * @return the descriptor for the array type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    82
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    83
        F arrayType();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    84
    }
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    85
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    86
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    87
    /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    88
     * An entity that has a method type descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    89
     *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    90
     * @param <F> the type representing field type descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    91
     * @param <M> the class implementing {@linkplain TypeDescriptor.OfMethod}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    92
     * @jvms 4.3.2 Field Descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    93
     * @jvms 4.3.3 Method Descriptors
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    94
     * @since 12
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    95
     */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    96
    interface OfMethod<F extends TypeDescriptor.OfField<F>, M extends TypeDescriptor.OfMethod<F, M>>
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    97
            extends TypeDescriptor {
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    98
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
    99
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   100
         * Return the number of parameters in the method type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   101
         * @return the number of parameters
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   102
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   103
        int parameterCount();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   104
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   105
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   106
         * Return a field descriptor describing the requested parameter of the method type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   107
         * described by this descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   108
         * @param i the index of the parameter
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   109
         * @return a field descriptor for the requested parameter type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   110
         * @throws IndexOutOfBoundsException if the index is outside the half-open
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   111
         * range {[0, parameterCount)}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   112
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   113
        F parameterType(int i);
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   114
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   115
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   116
         * Return a field descriptor describing the return type of the method type described
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   117
         * by this descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   118
         * @return a field descriptor for the return type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   119
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   120
        F returnType();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   121
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   122
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   123
         * Return an array of field descriptors for the parameter types of the method type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   124
         * described by this descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   125
         * @return field descriptors for the parameter types
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   126
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   127
        F[] parameterArray();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   128
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   129
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   130
         * Return an immutable list of field descriptors for the parameter types of the method type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   131
         * described by this descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   132
         * @return field descriptors for the parameter types
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   133
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   134
        List<F> parameterList();
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   135
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   136
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   137
         * Return a method descriptor that is identical to this one, except that the return
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   138
         * type has been changed to the specified type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   139
         *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   140
         * @param newReturn a field descriptor for the new return type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   141
         * @throws NullPointerException if any argument is {@code null}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   142
         * @return the new method descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   143
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   144
        M changeReturnType(F newReturn);
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   145
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   146
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   147
         * Return a method descriptor that is identical to this one,
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   148
         * except that a single parameter type has been changed to the specified type.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   149
         *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   150
         * @param index the index of the parameter to change
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   151
         * @param paramType a field descriptor describing the new parameter type
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   152
         * @return the new method descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   153
         * @throws NullPointerException if any argument is {@code null}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   154
         * @throws IndexOutOfBoundsException if the index is outside the half-open
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   155
         * range {[0, parameterCount)}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   156
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   157
        M changeParameterType(int index, F paramType);
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   158
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   159
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   160
         * Return a method descriptor that is identical to this one,
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   161
         * except that a range of parameter types have been removed.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   162
         *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   163
         * @param start the index of the first parameter to remove
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   164
         * @param end the index after the last parameter to remove
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   165
         * @return the new method descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   166
         *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   167
         * @throws IndexOutOfBoundsException if {@code start} is outside the half-open
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   168
         * range {@code [0, parameterCount)}, or {@code end} is outside the closed range
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   169
         * {@code [0, parameterCount]}, or if {@code start > end}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   170
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   171
        M dropParameterTypes(int start, int end);
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   172
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   173
        /**
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   174
         * Return a method descriptor that is identical to this one,
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   175
         * except that a range of additional parameter types have been inserted.
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   176
         *
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   177
         * @param pos the index at which to insert the first inserted parameter
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   178
         * @param paramTypes field descriptors describing the new parameter types
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   179
         *                   to insert
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   180
         * @return the new method descriptor
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   181
         * @throws NullPointerException if any argument is {@code null}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   182
         * @throws IndexOutOfBoundsException if {@code pos} is outside the closed
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   183
         * range {[0, parameterCount]}
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   184
         */
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   185
        @SuppressWarnings("unchecked")
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   186
        M insertParameterTypes(int pos, F... paramTypes);
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   187
    }
4fa75d8ad418 8210031: implementation for JVM Constants API
vromero
parents:
diff changeset
   188
}