Home » openjdk-7 » java.lang.invoke » [javadoc | source]

    1   /*
    2    * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Oracle designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Oracle in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   22    * or visit www.oracle.com if you need additional information or have any
   23    * questions.
   24    */
   25   
   26   package java.lang.invoke;
   27   
   28   import java.lang.reflect.Constructor;
   29   import java.lang.reflect.InvocationTargetException;
   30   import sun.invoke.util.ValueConversions;
   31   import sun.invoke.util.Wrapper;
   32   import static java.lang.invoke.MethodHandleStatics.*;
   33   import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP;
   34   
   35   /**
   36    * Adapters which mediate between incoming calls which are not generic
   37    * and outgoing calls which are.  Any call can be represented generically
   38    * boxing up its arguments, and (on return) unboxing the return value.
   39    * <p>
   40    * A call is "generic" (in MethodHandle terms) if its MethodType features
   41    * only Object arguments.  A non-generic call therefore features
   42    * primitives and/or reference types other than Object.
   43    * An adapter has types for its incoming and outgoing calls.
   44    * The incoming call type is simply determined by the adapter's type
   45    * (the MethodType it presents to callers).  The outgoing call type
   46    * is determined by the adapter's target (a MethodHandle that the adapter
   47    * either binds internally or else takes as a leading argument).
   48    * (To stretch the term, adapter-like method handles may have multiple
   49    * targets or be polymorphic across multiple call types.)
   50    * @author jrose
   51    */
   52   class ToGeneric {
   53       // type for the incoming call (may be erased)
   54       private final MethodType entryType;
   55       // incoming type with primitives moved to the end and turned to int/long
   56       private final MethodType rawEntryType;
   57       // adapter for the erased type
   58       private final Adapter adapter;
   59       // entry point for adapter (Adapter mh, a...) => ...
   60       private final MethodHandle entryPoint;
   61       // permutation of arguments for primsAtEndType
   62       private final int[] primsAtEndOrder;
   63       // optional final argument list conversions (at least, invokes the target)
   64       private final MethodHandle invoker;
   65       // conversion which unboxes a primitive return value
   66       private final MethodHandle returnConversion;
   67   
   68       /** Compute and cache information common to all generifying (boxing) adapters
   69        *  that implement members of the erasure-family of the given erased type.
   70        */
   71       private ToGeneric(MethodType entryType) {
   72           assert(entryType.erase() == entryType); // for now
   73           // incoming call will first "forget" all reference types except Object
   74           this.entryType = entryType;
   75           MethodHandle invoker0 = entryType.generic().invokers().exactInvoker();
   76           MethodType rawEntryTypeInit;
   77           Adapter ad = findAdapter(rawEntryTypeInit = entryType);
   78           if (ad != null) {
   79               // Immediate hit to exactly the adapter we want,
   80               // with no monkeying around with primitive types.
   81               this.returnConversion = computeReturnConversion(entryType, rawEntryTypeInit, false);
   82               this.rawEntryType = rawEntryTypeInit;
   83               this.adapter = ad;
   84               this.entryPoint = ad.prototypeEntryPoint();
   85               this.primsAtEndOrder = null;
   86               this.invoker = invoker0;
   87               return;
   88           }
   89   
   90           // next, it will reorder primitives after references
   91           MethodType primsAtEnd = entryType.form().primsAtEnd();
   92           // at the same time, it will "forget" all primitive types except int/long
   93           this.primsAtEndOrder = MethodTypeForm.primsAtEndOrder(entryType);
   94           if (primsAtEndOrder != null) {
   95               // reordering is required; build on top of a simpler ToGeneric
   96               ToGeneric va2 = ToGeneric.of(primsAtEnd);
   97               this.adapter = va2.adapter;
   98               if (true) throw new UnsupportedOperationException("NYI: primitive parameters must follow references; entryType = "+entryType);
   99               this.entryPoint = MethodHandleImpl.permuteArguments(
  100                       va2.entryPoint, primsAtEnd, entryType, primsAtEndOrder);
  101               // example: for entryType of (int,Object,Object), the reordered
  102               // type is (Object,Object,int) and the order is {1,2,0},
  103               // and putPAE is (mh,int0,obj1,obj2) => mh.invokeExact(obj1,obj2,int0)
  104               return;
  105           }
  106   
  107           // after any needed argument reordering, it will reinterpret
  108           // primitive arguments according to their "raw" types int/long
  109           MethodType intsAtEnd = primsAtEnd.form().primsAsInts();
  110           ad = findAdapter(rawEntryTypeInit = intsAtEnd);
  111           MethodHandle rawEntryPoint;
  112           if (ad != null) {
  113               rawEntryPoint = ad.prototypeEntryPoint();
  114           } else {
  115               // Perhaps the adapter is available only for longs.
  116               // If so, we can use it, but there will have to be a little
  117               // more stack motion on each call.
  118               MethodType longsAtEnd = primsAtEnd.form().primsAsLongs();
  119               ad = findAdapter(rawEntryTypeInit = longsAtEnd);
  120               if (ad != null) {
  121                   MethodType eptWithLongs = longsAtEnd.insertParameterTypes(0, ad.getClass());
  122                   MethodType eptWithInts  =  intsAtEnd.insertParameterTypes(0, ad.getClass());
  123                   rawEntryPoint = ad.prototypeEntryPoint();
  124                   MethodType midType = eptWithLongs;  // will change longs to ints
  125                   for (int i = 0, nargs = midType.parameterCount(); i < nargs; i++) {
  126                       if (midType.parameterType(i) != eptWithInts.parameterType(i)) {
  127                           assert(midType.parameterType(i) == long.class);
  128                           assert(eptWithInts.parameterType(i) == int.class);
  129                           MethodType nextType = midType.changeParameterType(i, int.class);
  130                           rawEntryPoint = MethodHandleImpl.convertArguments(
  131                                   rawEntryPoint, nextType, midType, 0);
  132                           midType = nextType;
  133                       }
  134                   }
  135                   assert(midType == eptWithInts);
  136               } else {
  137                   // If there is no statically compiled adapter,
  138                   // build one by means of dynamic bytecode generation.
  139                   ad = buildAdapterFromBytecodes(rawEntryTypeInit = intsAtEnd);
  140                   rawEntryPoint = ad.prototypeEntryPoint();
  141               }
  142           }
  143           MethodType tepType = entryType.insertParameterTypes(0, ad.getClass());
  144           this.entryPoint =
  145               AdapterMethodHandle.makeRetypeRaw(tepType, rawEntryPoint);
  146           if (this.entryPoint == null)
  147               throw new UnsupportedOperationException("cannot retype to "+entryType
  148                       +" from "+rawEntryPoint.type().dropParameterTypes(0, 1));
  149           this.returnConversion = computeReturnConversion(entryType, rawEntryTypeInit, false);
  150           this.rawEntryType = rawEntryTypeInit;
  151           this.adapter = ad;
  152           this.invoker = makeRawArgumentFilter(invoker0, rawEntryTypeInit, entryType);
  153       }
  154   
  155       static {
  156           assert(MethodHandleNatives.workaroundWithoutRicochetFrames());  // this class is deprecated
  157       }
  158   
  159       /** A generic argument list will be created by a call of type 'raw'.
  160        *  The values need to be reboxed for to match 'cooked'.
  161        *  Do this on the fly.
  162        */
  163       // TO DO: Use a generic argument converter in a different file
  164       static MethodHandle makeRawArgumentFilter(MethodHandle invoker,
  165               MethodType raw, MethodType cooked) {
  166           MethodHandle filteredInvoker = null;
  167           for (int i = 0, nargs = raw.parameterCount(); i < nargs; i++) {
  168               Class<?> src = raw.parameterType(i);
  169               Class<?> dst = cooked.parameterType(i);
  170               if (src == dst)  continue;
  171               assert(src.isPrimitive() && dst.isPrimitive());
  172               if (filteredInvoker == null) {
  173                   filteredInvoker =
  174                           AdapterMethodHandle.makeCheckCast(
  175                               invoker.type().generic(), invoker, 0, MethodHandle.class);
  176                   if (filteredInvoker == null)  throw new UnsupportedOperationException("NYI");
  177               }
  178               MethodHandle reboxer = ValueConversions.rebox(dst);
  179               filteredInvoker = FilterGeneric.makeArgumentFilter(1+i, reboxer, filteredInvoker);
  180               if (filteredInvoker == null)  throw new InternalError();
  181           }
  182           if (filteredInvoker == null)  return invoker;
  183           return AdapterMethodHandle.makeRetypeOnly(invoker.type(), filteredInvoker);
  184       }
  185   
  186       /**
  187        * Caller will be expecting a result from a call to {@code type},
  188        * while the internal adapter entry point is rawEntryType.
  189        * Also, the internal target method will be returning a boxed value,
  190        * as an untyped object.
  191        * <p>
  192        * Produce a value converter which will be typed to convert from
  193        * {@code Object} to the return value of {@code rawEntryType}, and will
  194        * in fact ensure that the value is compatible with the return type of
  195        * {@code type}.
  196        */
  197       private static MethodHandle computeReturnConversion(
  198               MethodType type, MethodType rawEntryType, boolean mustCast) {
  199           Class<?> tret = type.returnType();
  200           Class<?> rret = rawEntryType.returnType();
  201           if (mustCast || !tret.isPrimitive()) {
  202               assert(!tret.isPrimitive());
  203               assert(!rret.isPrimitive());
  204               if (rret == Object.class && !mustCast)
  205                   return null;
  206               return ValueConversions.cast(tret);
  207           } else if (tret == rret) {
  208               return ValueConversions.unbox(tret);
  209           } else {
  210               assert(rret.isPrimitive());
  211               assert(tret == double.class ? rret == long.class : rret == int.class);
  212               return ValueConversions.unboxRaw(tret);
  213           }
  214       }
  215   
  216       Adapter makeInstance(MethodType type, MethodHandle genericTarget) {
  217           genericTarget.getClass();  // check for NPE
  218           MethodHandle convert = returnConversion;
  219           if (primsAtEndOrder != null)
  220               // reorder arguments passed to genericTarget, if primsAtEndOrder
  221               throw new UnsupportedOperationException("NYI");
  222           if (type == entryType) {
  223               if (convert == null)  convert = ValueConversions.identity();
  224               return adapter.makeInstance(entryPoint, invoker, convert, genericTarget);
  225           }
  226           // my erased-type is not exactly the same as the desired type
  227           assert(type.erase() == entryType);  // else we are busted
  228           if (convert == null)
  229               convert = computeReturnConversion(type, rawEntryType, true);
  230           // retype erased reference arguments (the cast makes it safe to do this)
  231           MethodType tepType = type.insertParameterTypes(0, adapter.getClass());
  232           MethodHandle typedEntryPoint =
  233               AdapterMethodHandle.makeRetypeRaw(tepType, entryPoint);
  234           return adapter.makeInstance(typedEntryPoint, invoker, convert, genericTarget);
  235       }
  236   
  237       /** Build an adapter of the given type, which invokes genericTarget
  238        *  on the incoming arguments, after boxing as necessary.
  239        *  The return value is unboxed if necessary.
  240        * @param type  the required type of the
  241        * @param genericTarget the target, which must accept and return only Object values
  242        * @return an adapter method handle
  243        */
  244       public static MethodHandle make(MethodType type, MethodHandle genericTarget) {
  245           MethodType gtype = genericTarget.type();
  246           if (type.generic() != gtype)
  247               throw newIllegalArgumentException("type must be generic");
  248           if (type == gtype)  return genericTarget;
  249           return ToGeneric.of(type).makeInstance(type, genericTarget);
  250       }
  251   
  252       /** Return the adapter information for this type's erasure. */
  253       static ToGeneric of(MethodType type) {
  254           MethodTypeForm form = type.form();
  255           ToGeneric toGen = form.toGeneric;
  256           if (toGen == null)
  257               form.toGeneric = toGen = new ToGeneric(form.erasedType());
  258           return toGen;
  259       }
  260   
  261       String debugString() {
  262           return "ToGeneric"+entryType
  263                   +(primsAtEndOrder!=null?"[reorder]":"");
  264       }
  265   
  266       /* Create an adapter for the given incoming call type. */
  267       static Adapter findAdapter(MethodType entryPointType) {
  268           MethodTypeForm form = entryPointType.form();
  269           Class<?> rtype = entryPointType.returnType();
  270           int argc = form.parameterCount();
  271           int lac = form.longPrimitiveParameterCount();
  272           int iac = form.primitiveParameterCount() - lac;
  273           String intsAndLongs = (iac > 0 ? "I"+iac : "")+(lac > 0 ? "J"+lac : "");
  274           String rawReturn = String.valueOf(Wrapper.forPrimitiveType(rtype).basicTypeChar());
  275           String iname0 = "invoke_"+rawReturn;
  276           String iname1 = "invoke";
  277           String[] inames = { iname0, iname1 };
  278           String cname0 = rawReturn + argc;
  279           String cname1 = "A"       + argc;
  280           String[] cnames = { cname1, cname1+intsAndLongs, cname0, cname0+intsAndLongs };
  281           // e.g., D5I2, D5, L5I2, L5
  282           for (String cname : cnames) {
  283               Class<? extends Adapter> acls = Adapter.findSubClass(cname);
  284               if (acls == null)  continue;
  285               // see if it has the required invoke method
  286               for (String iname : inames) {
  287                   MethodHandle entryPoint = null;
  288                   try {
  289                       entryPoint = IMPL_LOOKUP.
  290                                       findSpecial(acls, iname, entryPointType, acls);
  291                   } catch (ReflectiveOperationException ex) {
  292                   }
  293                   if (entryPoint == null)  continue;
  294                   Constructor<? extends Adapter> ctor = null;
  295                   try {
  296                       // Prototype builder:
  297                       ctor = acls.getDeclaredConstructor(MethodHandle.class);
  298                   } catch (NoSuchMethodException ex) {
  299                   } catch (SecurityException ex) {
  300                   }
  301                   if (ctor == null)  continue;
  302                   try {
  303                       return ctor.newInstance(entryPoint);
  304                   } catch (IllegalArgumentException ex) {
  305                   } catch (InvocationTargetException wex) {
  306                       Throwable ex = wex.getTargetException();
  307                       if (ex instanceof Error)  throw (Error)ex;
  308                       if (ex instanceof RuntimeException)  throw (RuntimeException)ex;
  309                   } catch (InstantiationException ex) {
  310                   } catch (IllegalAccessException ex) {
  311                   }
  312               }
  313           }
  314           return null;
  315       }
  316   
  317       static Adapter buildAdapterFromBytecodes(MethodType entryPointType) {
  318           throw new UnsupportedOperationException("NYI: "+entryPointType);
  319       }
  320   
  321       /**
  322        * The invoke method takes some particular but unconstrained spread
  323        * of raw argument types, and returns a raw return type (in L/I/J/F/D).
  324        * Internally, it converts the incoming arguments uniformly into objects.
  325        * This series of objects is then passed to the {@code target} method,
  326        * which returns a result object.  This result is finally converted,
  327        * via another method handle {@code convert}, which is responsible for
  328        * converting the object result into the raw return value.
  329        */
  330       static abstract class Adapter extends BoundMethodHandle {
  331           /*
  332            * class X<<R,A...>> extends Adapter {
  333            *   Object...=>Object target;
  334            *   Object=>R convert;
  335            *   R invoke(A... a...) = convert(invoker(target, a...)))
  336            * }
  337            */
  338           protected final MethodHandle invoker;  // (MH, Object...) -> Object
  339           protected final MethodHandle target;   // Object... -> Object
  340           protected final MethodHandle convert;  // Object -> R
  341   
  342           @Override
  343           String debugString() {
  344               return target == null ? "prototype:"+convert : addTypeString(target, this);
  345           }
  346   
  347           protected boolean isPrototype() { return target == null; }
  348           /* Prototype constructor. */
  349           protected Adapter(MethodHandle entryPoint) {
  350               super(entryPoint);
  351               this.invoker = null;
  352               this.convert = entryPoint;
  353               this.target = null;
  354               assert(isPrototype());
  355           }
  356           protected MethodHandle prototypeEntryPoint() {
  357               if (!isPrototype())  throw new InternalError();
  358               return convert;
  359           }
  360   
  361           protected Adapter(MethodHandle entryPoint, MethodHandle invoker, MethodHandle convert, MethodHandle target) {
  362               super(entryPoint);
  363               this.invoker = invoker;
  364               this.convert = convert;
  365               this.target = target;
  366           }
  367   
  368           /** Make a copy of self, with new fields. */
  369           protected abstract Adapter makeInstance(MethodHandle entryPoint,
  370                   MethodHandle invoker, MethodHandle convert, MethodHandle target);
  371           // { return new ThisType(entryPoint, convert, target); }
  372   
  373           // Code to run when the arguments (<= 4) have all been boxed.
  374           protected Object target()               throws Throwable { return invoker.invokeExact(target); }
  375           protected Object target(Object a0)      throws Throwable { return invoker.invokeExact(target, a0); }
  376           protected Object target(Object a0, Object a1)
  377                                                   throws Throwable { return invoker.invokeExact(target, a0, a1); }
  378           protected Object target(Object a0, Object a1, Object a2)
  379                                                   throws Throwable { return invoker.invokeExact(target, a0, a1, a2); }
  380           protected Object target(Object a0, Object a1, Object a2, Object a3)
  381                                                   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3); }
  382           /*
  383           protected Object target_0(Object... av) throws Throwable { return invoker.invokeExact(target, av); }
  384           protected Object target_1(Object a0, Object... av)
  385                                                   throws Throwable { return invoker.invokeExact(target, a0, (Object)av); }
  386           protected Object target_2(Object a0, Object a1, Object... av)
  387                                                   throws Throwable { return invoker.invokeExact(target, a0, a1, (Object)av); }
  388           protected Object target_3(Object a0, Object a1, Object a2, Object... av)
  389                                                   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, (Object)av); }
  390           protected Object target_4(Object a0, Object a1, Object a2, Object a3, Object... av)
  391                                                   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, (Object)av); }
  392           // */
  393           // (For more than 4 arguments, generate the code in the adapter itself.)
  394   
  395           // Code to run when the generic target has finished and produced a value.
  396           protected Object return_L(Object res) throws Throwable { return (Object)convert.invokeExact(res); }
  397           protected int    return_I(Object res) throws Throwable { return (int)   convert.invokeExact(res); }
  398           protected long   return_J(Object res) throws Throwable { return (long)  convert.invokeExact(res); }
  399           protected float  return_F(Object res) throws Throwable { return (float) convert.invokeExact(res); }
  400           protected double return_D(Object res) throws Throwable { return (double)convert.invokeExact(res); }
  401   
  402           static private final String CLASS_PREFIX; // "java.lang.invoke.ToGeneric$"
  403           static {
  404               String aname = Adapter.class.getName();
  405               String sname = Adapter.class.getSimpleName();
  406               if (!aname.endsWith(sname))  throw new InternalError();
  407               CLASS_PREFIX = aname.substring(0, aname.length() - sname.length());
  408           }
  409           /** Find a sibing class of Adapter. */
  410           static Class<? extends Adapter> findSubClass(String name) {
  411               String cname = Adapter.CLASS_PREFIX + name;
  412               try {
  413                   return Class.forName(cname).asSubclass(Adapter.class);
  414               } catch (ClassNotFoundException ex) {
  415                   return null;
  416               } catch (ClassCastException ex) {
  417                   return null;
  418               }
  419           }
  420       }
  421   
  422       /* generated classes follow this pattern:
  423       static class A1 extends Adapter {
  424           protected A1(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  425           protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  426           protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); }
  427           protected Object target(Object a0)   throws Throwable { return invoker.invokeExact(target, a0); }
  428           protected Object targetA1(Object a0) throws Throwable { return target(a0); }
  429           protected Object targetA1(int    a0) throws Throwable { return target(a0); }
  430           protected Object targetA1(long   a0) throws Throwable { return target(a0); }
  431           protected Object invoke_L(Object a0) throws Throwable { return return_L(targetA1(a0)); }
  432           protected int    invoke_I(Object a0) throws Throwable { return return_I(targetA1(a0)); }
  433           protected long   invoke_J(Object a0) throws Throwable { return return_J(targetA1(a0)); }
  434           protected float  invoke_F(Object a0) throws Throwable { return return_F(targetA1(a0)); }
  435           protected double invoke_D(Object a0) throws Throwable { return return_D(targetA1(a0)); }
  436           protected Object invoke_L(int    a0) throws Throwable { return return_L(targetA1(a0)); }
  437           protected int    invoke_I(int    a0) throws Throwable { return return_I(targetA1(a0)); }
  438           protected long   invoke_J(int    a0) throws Throwable { return return_J(targetA1(a0)); }
  439           protected float  invoke_F(int    a0) throws Throwable { return return_F(targetA1(a0)); }
  440           protected double invoke_D(int    a0) throws Throwable { return return_D(targetA1(a0)); }
  441           protected Object invoke_L(long   a0) throws Throwable { return return_L(targetA1(a0)); }
  442           protected int    invoke_I(long   a0) throws Throwable { return return_I(targetA1(a0)); }
  443           protected long   invoke_J(long   a0) throws Throwable { return return_J(targetA1(a0)); }
  444           protected float  invoke_F(long   a0) throws Throwable { return return_F(targetA1(a0)); }
  445           protected double invoke_D(long   a0) throws Throwable { return return_D(targetA1(a0)); }
  446       }
  447       // */
  448   
  449   /*
  450   : SHELL; n=ToGeneric; cp -p $n.java $n.java-; sed < $n.java- > $n.java+ -e '/{{*{{/,/}}*}}/w /tmp/genclasses.java' -e '/}}*}}/q'; (cd /tmp; javac -d . genclasses.java; java -cp . genclasses) >> $n.java+; echo '}' >> $n.java+; mv $n.java+ $n.java; mv $n.java- $n.java~
  451   //{{{
  452   import java.util;
  453   class genclasses {
  454       static String[] TYPES = { "Object", "int   ", "long  ", "float ", "double" };
  455       static String[] TCHARS = { "L",     "I",      "J",      "F",      "D",     "A" };
  456       static String[][] TEMPLATES = { {
  457           "@for@ arity=0..3   rcat<=4 nrefs<=99 nints<=99 nlongs<=99",
  458           "@for@ arity=4..4   rcat<=4 nrefs<=99 nints<=99 nlongs<=99",
  459           "@for@ arity=5..5   rcat<=2 nrefs<=99 nints<=99 nlongs<=99",
  460           "@for@ arity=6..10  rcat<=2 nrefs<=99 nints=0   nlongs<=99",
  461           "    //@each-cat@",
  462           "    static class @cat@ extends Adapter {",
  463           "        protected @cat@(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype",
  464           "        protected @cat@(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }",
  465           "        protected @cat@ makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new @cat@(e, i, c, t); }",
  466           "        protected Object target(@Ovav@)   throws Throwable { return invoker.invokeExact(target@comma@@av@); }",
  467           "        //@each-Tv@",
  468           "        protected Object target@cat@(@Tvav@) throws Throwable { return target(@av@); }",
  469           "        //@end-Tv@",
  470           "        //@each-Tv@",
  471           "        //@each-R@",
  472           "        protected @R@ invoke_@Rc@(@Tvav@) throws Throwable { return return_@Rc@(target@cat@(@av@)); }",
  473           "        //@end-R@",
  474           "        //@end-Tv@",
  475           "    }",
  476       } };
  477       enum VAR {
  478           cat, R, Rc, Tv, av, comma, Tvav, Ovav;
  479           public final String pattern = "@"+toString().replace('_','.')+"@";
  480           public String binding;
  481           static void makeBindings(boolean topLevel, int rcat, int nrefs, int nints, int nlongs) {
  482               int nargs = nrefs + nints + nlongs;
  483               if (topLevel)
  484                   VAR.cat.binding = catstr(ALL_RETURN_TYPES ? TYPES.length : rcat, nrefs, nints, nlongs);
  485               VAR.R.binding = TYPES[rcat];
  486               VAR.Rc.binding = TCHARS[rcat];
  487               String[] Tv = new String[nargs];
  488               String[] av = new String[nargs];
  489               String[] Tvav = new String[nargs];
  490               String[] Ovav = new String[nargs];
  491               for (int i = 0; i < nargs; i++) {
  492                   int tcat = (i < nrefs) ? 0 : (i < nrefs + nints) ? 1 : 2;
  493                   Tv[i] = TYPES[tcat];
  494                   av[i] = arg(i);
  495                   Tvav[i] = param(Tv[i], av[i]);
  496                   Ovav[i] = param("Object", av[i]);
  497               }
  498               VAR.Tv.binding = comma(Tv);
  499               VAR.av.binding = comma(av);
  500               VAR.comma.binding = (av.length == 0 ? "" : ", ");
  501               VAR.Tvav.binding = comma(Tvav);
  502               VAR.Ovav.binding = comma(Ovav);
  503           }
  504           static String arg(int i) { return "a"+i; }
  505           static String param(String t, String a) { return t+" "+a; }
  506           static String comma(String[] v) { return comma("", v); }
  507           static String comma(String sep, String[] v) {
  508               if (v.length == 0)  return "";
  509               String res = sep+v[0];
  510               for (int i = 1; i < v.length; i++)  res += ", "+v[i];
  511               return res;
  512           }
  513           static String transform(String string) {
  514               for (VAR var : values())
  515                   string = string.replaceAll(var.pattern, var.binding);
  516               return string;
  517           }
  518       }
  519       static String[] stringsIn(String[] strings, int beg, int end) {
  520           return Arrays.copyOfRange(strings, beg, Math.min(end, strings.length));
  521       }
  522       static String[] stringsBefore(String[] strings, int pos) {
  523           return stringsIn(strings, 0, pos);
  524       }
  525       static String[] stringsAfter(String[] strings, int pos) {
  526           return stringsIn(strings, pos, strings.length);
  527       }
  528       static int indexAfter(String[] strings, int pos, String tag) {
  529           return Math.min(indexBefore(strings, pos, tag) + 1, strings.length);
  530       }
  531       static int indexBefore(String[] strings, int pos, String tag) {
  532           for (int i = pos, end = strings.length; ; i++) {
  533               if (i == end || strings[i].endsWith(tag))  return i;
  534           }
  535       }
  536       static int MIN_ARITY, MAX_ARITY, MAX_RCAT, MAX_REFS, MAX_INTS, MAX_LONGS;
  537       static boolean ALL_ARG_TYPES, ALL_RETURN_TYPES;
  538       static HashSet<String> done = new HashSet<String>();
  539       public static void main(String... av) {
  540           for (String[] template : TEMPLATES) {
  541               int forLinesLimit = indexBefore(template, 0, "@each-cat@");
  542               String[] forLines = stringsBefore(template, forLinesLimit);
  543               template = stringsAfter(template, forLinesLimit);
  544               for (String forLine : forLines)
  545                   expandTemplate(forLine, template);
  546           }
  547       }
  548       static void expandTemplate(String forLine, String[] template) {
  549           String[] params = forLine.split("[^0-9]+");
  550           if (params[0].length() == 0)  params = stringsAfter(params, 1);
  551           System.out.println("//params="+Arrays.asList(params));
  552           int pcur = 0;
  553           MIN_ARITY = Integer.valueOf(params[pcur++]);
  554           MAX_ARITY = Integer.valueOf(params[pcur++]);
  555           MAX_RCAT  = Integer.valueOf(params[pcur++]);
  556           MAX_REFS  = Integer.valueOf(params[pcur++]);
  557           MAX_INTS  = Integer.valueOf(params[pcur++]);
  558           MAX_LONGS = Integer.valueOf(params[pcur++]);
  559           if (pcur != params.length)  throw new RuntimeException("bad extra param: "+forLine);
  560           if (MAX_RCAT >= TYPES.length)  MAX_RCAT = TYPES.length - 1;
  561           ALL_ARG_TYPES = (indexBefore(template, 0, "@each-Tv@") < template.length);
  562           ALL_RETURN_TYPES = (indexBefore(template, 0, "@each-R@") < template.length);
  563           for (int nargs = MIN_ARITY; nargs <= MAX_ARITY; nargs++) {
  564               for (int rcat = 0; rcat <= MAX_RCAT; rcat++) {
  565                   expandTemplate(template, true, rcat, nargs, 0, 0);
  566                   if (ALL_ARG_TYPES)  break;
  567                   expandTemplateForPrims(template, true, rcat, nargs, 1, 1);
  568                   if (ALL_RETURN_TYPES)  break;
  569               }
  570           }
  571       }
  572       static String catstr(int rcat, int nrefs, int nints, int nlongs) {
  573           int nargs = nrefs + nints + nlongs;
  574           String cat = TCHARS[rcat] + nargs;
  575           if (!ALL_ARG_TYPES)  cat += (nints==0?"":"I"+nints)+(nlongs==0?"":"J"+nlongs);
  576           return cat;
  577       }
  578       static void expandTemplateForPrims(String[] template, boolean topLevel, int rcat, int nargs, int minints, int minlongs) {
  579           for (int isLong = 0; isLong <= 1; isLong++) {
  580               for (int nprims = 1; nprims <= nargs; nprims++) {
  581                   int nrefs = nargs - nprims;
  582                   int nints = ((1-isLong) * nprims);
  583                   int nlongs = (isLong * nprims);
  584                   expandTemplate(template, topLevel, rcat, nrefs, nints, nlongs);
  585               }
  586           }
  587       }
  588       static void expandTemplate(String[] template, boolean topLevel,
  589                                  int rcat, int nrefs, int nints, int nlongs) {
  590           int nargs = nrefs + nints + nlongs;
  591           if (nrefs > MAX_REFS || nints > MAX_INTS || nlongs > MAX_LONGS)  return;
  592           VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs);
  593           if (topLevel && !done.add(VAR.cat.binding)) {
  594               System.out.println("    //repeat "+VAR.cat.binding);
  595               return;
  596           }
  597           for (int i = 0; i < template.length; i++) {
  598               String line = template[i];
  599               if (line.endsWith("@each-cat@")) {
  600                   // ignore
  601               } else if (line.endsWith("@each-R@")) {
  602                   int blockEnd = indexAfter(template, i, "@end-R@");
  603                   String[] block = stringsIn(template, i+1, blockEnd-1);
  604                   for (int rcat1 = rcat; rcat1 <= MAX_RCAT; rcat1++)
  605                       expandTemplate(block, false, rcat1, nrefs, nints, nlongs);
  606                   VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs);
  607                   i = blockEnd-1; continue;
  608               } else if (line.endsWith("@each-Tv@")) {
  609                   int blockEnd = indexAfter(template, i, "@end-Tv@");
  610                   String[] block = stringsIn(template, i+1, blockEnd-1);
  611                   expandTemplate(block, false, rcat, nrefs, nints, nlongs);
  612                   expandTemplateForPrims(block, false, rcat, nargs, nints+1, nlongs+1);
  613                   VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs);
  614                   i = blockEnd-1; continue;
  615               } else {
  616                   System.out.println(VAR.transform(line));
  617               }
  618           }
  619       }
  620   }
  621   //}}} */
  622   //params=[0, 3, 4, 99, 99, 99]
  623       static class A0 extends Adapter {
  624           protected A0(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  625           protected A0(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  626           protected A0 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A0(e, i, c, t); }
  627           protected Object target()   throws Throwable { return invoker.invokeExact(target); }
  628           protected Object targetA0() throws Throwable { return target(); }
  629           protected Object invoke_L() throws Throwable { return return_L(targetA0()); }
  630           protected int    invoke_I() throws Throwable { return return_I(targetA0()); }
  631           protected long   invoke_J() throws Throwable { return return_J(targetA0()); }
  632           protected float  invoke_F() throws Throwable { return return_F(targetA0()); }
  633           protected double invoke_D() throws Throwable { return return_D(targetA0()); }
  634       }
  635       static class A1 extends Adapter {
  636           protected A1(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  637           protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  638           protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); }
  639           protected Object target(Object a0)   throws Throwable { return invoker.invokeExact(target, a0); }
  640           protected Object targetA1(Object a0) throws Throwable { return target(a0); }
  641           protected Object targetA1(int    a0) throws Throwable { return target(a0); }
  642           protected Object targetA1(long   a0) throws Throwable { return target(a0); }
  643           protected Object invoke_L(Object a0) throws Throwable { return return_L(targetA1(a0)); }
  644           protected int    invoke_I(Object a0) throws Throwable { return return_I(targetA1(a0)); }
  645           protected long   invoke_J(Object a0) throws Throwable { return return_J(targetA1(a0)); }
  646           protected float  invoke_F(Object a0) throws Throwable { return return_F(targetA1(a0)); }
  647           protected double invoke_D(Object a0) throws Throwable { return return_D(targetA1(a0)); }
  648           protected Object invoke_L(int    a0) throws Throwable { return return_L(targetA1(a0)); }
  649           protected int    invoke_I(int    a0) throws Throwable { return return_I(targetA1(a0)); }
  650           protected long   invoke_J(int    a0) throws Throwable { return return_J(targetA1(a0)); }
  651           protected float  invoke_F(int    a0) throws Throwable { return return_F(targetA1(a0)); }
  652           protected double invoke_D(int    a0) throws Throwable { return return_D(targetA1(a0)); }
  653           protected Object invoke_L(long   a0) throws Throwable { return return_L(targetA1(a0)); }
  654           protected int    invoke_I(long   a0) throws Throwable { return return_I(targetA1(a0)); }
  655           protected long   invoke_J(long   a0) throws Throwable { return return_J(targetA1(a0)); }
  656           protected float  invoke_F(long   a0) throws Throwable { return return_F(targetA1(a0)); }
  657           protected double invoke_D(long   a0) throws Throwable { return return_D(targetA1(a0)); }
  658       }
  659       static class A2 extends Adapter {
  660           protected A2(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  661           protected A2(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  662           protected A2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A2(e, i, c, t); }
  663           protected Object target(Object a0, Object a1)   throws Throwable { return invoker.invokeExact(target, a0, a1); }
  664           protected Object targetA2(Object a0, Object a1) throws Throwable { return target(a0, a1); }
  665           protected Object targetA2(Object a0, int    a1) throws Throwable { return target(a0, a1); }
  666           protected Object targetA2(int    a0, int    a1) throws Throwable { return target(a0, a1); }
  667           protected Object targetA2(Object a0, long   a1) throws Throwable { return target(a0, a1); }
  668           protected Object targetA2(long   a0, long   a1) throws Throwable { return target(a0, a1); }
  669           protected Object invoke_L(Object a0, Object a1) throws Throwable { return return_L(targetA2(a0, a1)); }
  670           protected int    invoke_I(Object a0, Object a1) throws Throwable { return return_I(targetA2(a0, a1)); }
  671           protected long   invoke_J(Object a0, Object a1) throws Throwable { return return_J(targetA2(a0, a1)); }
  672           protected float  invoke_F(Object a0, Object a1) throws Throwable { return return_F(targetA2(a0, a1)); }
  673           protected double invoke_D(Object a0, Object a1) throws Throwable { return return_D(targetA2(a0, a1)); }
  674           protected Object invoke_L(Object a0, int    a1) throws Throwable { return return_L(targetA2(a0, a1)); }
  675           protected int    invoke_I(Object a0, int    a1) throws Throwable { return return_I(targetA2(a0, a1)); }
  676           protected long   invoke_J(Object a0, int    a1) throws Throwable { return return_J(targetA2(a0, a1)); }
  677           protected float  invoke_F(Object a0, int    a1) throws Throwable { return return_F(targetA2(a0, a1)); }
  678           protected double invoke_D(Object a0, int    a1) throws Throwable { return return_D(targetA2(a0, a1)); }
  679           protected Object invoke_L(int    a0, int    a1) throws Throwable { return return_L(targetA2(a0, a1)); }
  680           protected int    invoke_I(int    a0, int    a1) throws Throwable { return return_I(targetA2(a0, a1)); }
  681           protected long   invoke_J(int    a0, int    a1) throws Throwable { return return_J(targetA2(a0, a1)); }
  682           protected float  invoke_F(int    a0, int    a1) throws Throwable { return return_F(targetA2(a0, a1)); }
  683           protected double invoke_D(int    a0, int    a1) throws Throwable { return return_D(targetA2(a0, a1)); }
  684           protected Object invoke_L(Object a0, long   a1) throws Throwable { return return_L(targetA2(a0, a1)); }
  685           protected int    invoke_I(Object a0, long   a1) throws Throwable { return return_I(targetA2(a0, a1)); }
  686           protected long   invoke_J(Object a0, long   a1) throws Throwable { return return_J(targetA2(a0, a1)); }
  687           protected float  invoke_F(Object a0, long   a1) throws Throwable { return return_F(targetA2(a0, a1)); }
  688           protected double invoke_D(Object a0, long   a1) throws Throwable { return return_D(targetA2(a0, a1)); }
  689           protected Object invoke_L(long   a0, long   a1) throws Throwable { return return_L(targetA2(a0, a1)); }
  690           protected int    invoke_I(long   a0, long   a1) throws Throwable { return return_I(targetA2(a0, a1)); }
  691           protected long   invoke_J(long   a0, long   a1) throws Throwable { return return_J(targetA2(a0, a1)); }
  692           protected float  invoke_F(long   a0, long   a1) throws Throwable { return return_F(targetA2(a0, a1)); }
  693           protected double invoke_D(long   a0, long   a1) throws Throwable { return return_D(targetA2(a0, a1)); }
  694       }
  695       static class A3 extends Adapter {
  696           protected A3(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  697           protected A3(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  698           protected A3 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A3(e, i, c, t); }
  699           protected Object target(Object a0, Object a1, Object a2)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2); }
  700           protected Object targetA3(Object a0, Object a1, Object a2) throws Throwable { return target(a0, a1, a2); }
  701           protected Object targetA3(Object a0, Object a1, int    a2) throws Throwable { return target(a0, a1, a2); }
  702           protected Object targetA3(Object a0, int    a1, int    a2) throws Throwable { return target(a0, a1, a2); }
  703           protected Object targetA3(int    a0, int    a1, int    a2) throws Throwable { return target(a0, a1, a2); }
  704           protected Object targetA3(Object a0, Object a1, long   a2) throws Throwable { return target(a0, a1, a2); }
  705           protected Object targetA3(Object a0, long   a1, long   a2) throws Throwable { return target(a0, a1, a2); }
  706           protected Object targetA3(long   a0, long   a1, long   a2) throws Throwable { return target(a0, a1, a2); }
  707           protected Object invoke_L(Object a0, Object a1, Object a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); }
  708           protected int    invoke_I(Object a0, Object a1, Object a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); }
  709           protected long   invoke_J(Object a0, Object a1, Object a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); }
  710           protected float  invoke_F(Object a0, Object a1, Object a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); }
  711           protected double invoke_D(Object a0, Object a1, Object a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); }
  712           protected Object invoke_L(Object a0, Object a1, int    a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); }
  713           protected int    invoke_I(Object a0, Object a1, int    a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); }
  714           protected long   invoke_J(Object a0, Object a1, int    a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); }
  715           protected float  invoke_F(Object a0, Object a1, int    a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); }
  716           protected double invoke_D(Object a0, Object a1, int    a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); }
  717           protected Object invoke_L(Object a0, int    a1, int    a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); }
  718           protected int    invoke_I(Object a0, int    a1, int    a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); }
  719           protected long   invoke_J(Object a0, int    a1, int    a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); }
  720           protected float  invoke_F(Object a0, int    a1, int    a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); }
  721           protected double invoke_D(Object a0, int    a1, int    a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); }
  722           protected Object invoke_L(int    a0, int    a1, int    a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); }
  723           protected int    invoke_I(int    a0, int    a1, int    a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); }
  724           protected long   invoke_J(int    a0, int    a1, int    a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); }
  725           protected float  invoke_F(int    a0, int    a1, int    a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); }
  726           protected double invoke_D(int    a0, int    a1, int    a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); }
  727           protected Object invoke_L(Object a0, Object a1, long   a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); }
  728           protected int    invoke_I(Object a0, Object a1, long   a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); }
  729           protected long   invoke_J(Object a0, Object a1, long   a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); }
  730           protected float  invoke_F(Object a0, Object a1, long   a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); }
  731           protected double invoke_D(Object a0, Object a1, long   a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); }
  732           protected Object invoke_L(Object a0, long   a1, long   a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); }
  733           protected int    invoke_I(Object a0, long   a1, long   a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); }
  734           protected long   invoke_J(Object a0, long   a1, long   a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); }
  735           protected float  invoke_F(Object a0, long   a1, long   a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); }
  736           protected double invoke_D(Object a0, long   a1, long   a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); }
  737           protected Object invoke_L(long   a0, long   a1, long   a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); }
  738           protected int    invoke_I(long   a0, long   a1, long   a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); }
  739           protected long   invoke_J(long   a0, long   a1, long   a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); }
  740           protected float  invoke_F(long   a0, long   a1, long   a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); }
  741           protected double invoke_D(long   a0, long   a1, long   a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); }
  742       }
  743   //params=[4, 4, 4, 99, 99, 99]
  744       static class A4 extends Adapter {
  745           protected A4(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  746           protected A4(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  747           protected A4 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A4(e, i, c, t); }
  748           protected Object target(Object a0, Object a1, Object a2, Object a3)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3); }
  749           protected Object targetA4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return target(a0, a1, a2, a3); }
  750           protected Object targetA4(Object a0, Object a1, Object a2, int    a3) throws Throwable { return target(a0, a1, a2, a3); }
  751           protected Object targetA4(Object a0, Object a1, int    a2, int    a3) throws Throwable { return target(a0, a1, a2, a3); }
  752           protected Object targetA4(Object a0, int    a1, int    a2, int    a3) throws Throwable { return target(a0, a1, a2, a3); }
  753           protected Object targetA4(int    a0, int    a1, int    a2, int    a3) throws Throwable { return target(a0, a1, a2, a3); }
  754           protected Object targetA4(Object a0, Object a1, Object a2, long   a3) throws Throwable { return target(a0, a1, a2, a3); }
  755           protected Object targetA4(Object a0, Object a1, long   a2, long   a3) throws Throwable { return target(a0, a1, a2, a3); }
  756           protected Object targetA4(Object a0, long   a1, long   a2, long   a3) throws Throwable { return target(a0, a1, a2, a3); }
  757           protected Object targetA4(long   a0, long   a1, long   a2, long   a3) throws Throwable { return target(a0, a1, a2, a3); }
  758           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  759           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  760           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  761           protected float  invoke_F(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  762           protected double invoke_D(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  763           protected Object invoke_L(Object a0, Object a1, Object a2, int    a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  764           protected int    invoke_I(Object a0, Object a1, Object a2, int    a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  765           protected long   invoke_J(Object a0, Object a1, Object a2, int    a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  766           protected float  invoke_F(Object a0, Object a1, Object a2, int    a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  767           protected double invoke_D(Object a0, Object a1, Object a2, int    a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  768           protected Object invoke_L(Object a0, Object a1, int    a2, int    a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  769           protected int    invoke_I(Object a0, Object a1, int    a2, int    a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  770           protected long   invoke_J(Object a0, Object a1, int    a2, int    a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  771           protected float  invoke_F(Object a0, Object a1, int    a2, int    a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  772           protected double invoke_D(Object a0, Object a1, int    a2, int    a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  773           protected Object invoke_L(Object a0, int    a1, int    a2, int    a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  774           protected int    invoke_I(Object a0, int    a1, int    a2, int    a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  775           protected long   invoke_J(Object a0, int    a1, int    a2, int    a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  776           protected float  invoke_F(Object a0, int    a1, int    a2, int    a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  777           protected double invoke_D(Object a0, int    a1, int    a2, int    a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  778           protected Object invoke_L(int    a0, int    a1, int    a2, int    a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  779           protected int    invoke_I(int    a0, int    a1, int    a2, int    a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  780           protected long   invoke_J(int    a0, int    a1, int    a2, int    a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  781           protected float  invoke_F(int    a0, int    a1, int    a2, int    a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  782           protected double invoke_D(int    a0, int    a1, int    a2, int    a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  783           protected Object invoke_L(Object a0, Object a1, Object a2, long   a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  784           protected int    invoke_I(Object a0, Object a1, Object a2, long   a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  785           protected long   invoke_J(Object a0, Object a1, Object a2, long   a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  786           protected float  invoke_F(Object a0, Object a1, Object a2, long   a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  787           protected double invoke_D(Object a0, Object a1, Object a2, long   a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  788           protected Object invoke_L(Object a0, Object a1, long   a2, long   a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  789           protected int    invoke_I(Object a0, Object a1, long   a2, long   a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  790           protected long   invoke_J(Object a0, Object a1, long   a2, long   a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  791           protected float  invoke_F(Object a0, Object a1, long   a2, long   a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  792           protected double invoke_D(Object a0, Object a1, long   a2, long   a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  793           protected Object invoke_L(Object a0, long   a1, long   a2, long   a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  794           protected int    invoke_I(Object a0, long   a1, long   a2, long   a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  795           protected long   invoke_J(Object a0, long   a1, long   a2, long   a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  796           protected float  invoke_F(Object a0, long   a1, long   a2, long   a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  797           protected double invoke_D(Object a0, long   a1, long   a2, long   a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  798           protected Object invoke_L(long   a0, long   a1, long   a2, long   a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); }
  799           protected int    invoke_I(long   a0, long   a1, long   a2, long   a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); }
  800           protected long   invoke_J(long   a0, long   a1, long   a2, long   a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); }
  801           protected float  invoke_F(long   a0, long   a1, long   a2, long   a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); }
  802           protected double invoke_D(long   a0, long   a1, long   a2, long   a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); }
  803       }
  804   //params=[5, 5, 2, 99, 99, 99]
  805       static class A5 extends Adapter {
  806           protected A5(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  807           protected A5(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  808           protected A5 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A5(e, i, c, t); }
  809           protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4); }
  810           protected Object targetA5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  811           protected Object targetA5(Object a0, Object a1, Object a2, Object a3, int    a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  812           protected Object targetA5(Object a0, Object a1, Object a2, int    a3, int    a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  813           protected Object targetA5(Object a0, Object a1, int    a2, int    a3, int    a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  814           protected Object targetA5(Object a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  815           protected Object targetA5(int    a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  816           protected Object targetA5(Object a0, Object a1, Object a2, Object a3, long   a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  817           protected Object targetA5(Object a0, Object a1, Object a2, long   a3, long   a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  818           protected Object targetA5(Object a0, Object a1, long   a2, long   a3, long   a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  819           protected Object targetA5(Object a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  820           protected Object targetA5(long   a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
  821           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  822           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  823           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  824           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, int    a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  825           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, int    a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  826           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, int    a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  827           protected Object invoke_L(Object a0, Object a1, Object a2, int    a3, int    a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  828           protected int    invoke_I(Object a0, Object a1, Object a2, int    a3, int    a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  829           protected long   invoke_J(Object a0, Object a1, Object a2, int    a3, int    a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  830           protected Object invoke_L(Object a0, Object a1, int    a2, int    a3, int    a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  831           protected int    invoke_I(Object a0, Object a1, int    a2, int    a3, int    a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  832           protected long   invoke_J(Object a0, Object a1, int    a2, int    a3, int    a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  833           protected Object invoke_L(Object a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  834           protected int    invoke_I(Object a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  835           protected long   invoke_J(Object a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  836           protected Object invoke_L(int    a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  837           protected int    invoke_I(int    a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  838           protected long   invoke_J(int    a0, int    a1, int    a2, int    a3, int    a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  839           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long   a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  840           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, long   a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  841           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, long   a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  842           protected Object invoke_L(Object a0, Object a1, Object a2, long   a3, long   a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  843           protected int    invoke_I(Object a0, Object a1, Object a2, long   a3, long   a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  844           protected long   invoke_J(Object a0, Object a1, Object a2, long   a3, long   a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  845           protected Object invoke_L(Object a0, Object a1, long   a2, long   a3, long   a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  846           protected int    invoke_I(Object a0, Object a1, long   a2, long   a3, long   a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  847           protected long   invoke_J(Object a0, Object a1, long   a2, long   a3, long   a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  848           protected Object invoke_L(Object a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  849           protected int    invoke_I(Object a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  850           protected long   invoke_J(Object a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  851           protected Object invoke_L(long   a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); }
  852           protected int    invoke_I(long   a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); }
  853           protected long   invoke_J(long   a0, long   a1, long   a2, long   a3, long   a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); }
  854       }
  855   //params=[6, 10, 2, 99, 0, 99]
  856       static class A6 extends Adapter {
  857           protected A6(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  858           protected A6(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  859           protected A6 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A6(e, i, c, t); }
  860           protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5); }
  861           protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
  862           protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
  863           protected Object targetA6(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
  864           protected Object targetA6(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
  865           protected Object targetA6(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
  866           protected Object targetA6(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
  867           protected Object targetA6(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
  868           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); }
  869           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); }
  870           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); }
  871           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); }
  872           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); }
  873           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); }
  874           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); }
  875           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); }
  876           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); }
  877           protected Object invoke_L(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); }
  878           protected int    invoke_I(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); }
  879           protected long   invoke_J(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); }
  880           protected Object invoke_L(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); }
  881           protected int    invoke_I(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); }
  882           protected long   invoke_J(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); }
  883           protected Object invoke_L(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); }
  884           protected int    invoke_I(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); }
  885           protected long   invoke_J(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); }
  886           protected Object invoke_L(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); }
  887           protected int    invoke_I(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); }
  888           protected long   invoke_J(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); }
  889       }
  890       static class A7 extends Adapter {
  891           protected A7(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  892           protected A7(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  893           protected A7 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A7(e, i, c, t); }
  894           protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6); }
  895           protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  896           protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  897           protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  898           protected Object targetA7(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  899           protected Object targetA7(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  900           protected Object targetA7(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  901           protected Object targetA7(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  902           protected Object targetA7(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
  903           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  904           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  905           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  906           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  907           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  908           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  909           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  910           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  911           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  912           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  913           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  914           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  915           protected Object invoke_L(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  916           protected int    invoke_I(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  917           protected long   invoke_J(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  918           protected Object invoke_L(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  919           protected int    invoke_I(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  920           protected long   invoke_J(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  921           protected Object invoke_L(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  922           protected int    invoke_I(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  923           protected long   invoke_J(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  924           protected Object invoke_L(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  925           protected int    invoke_I(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  926           protected long   invoke_J(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); }
  927       }
  928       static class A8 extends Adapter {
  929           protected A8(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  930           protected A8(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  931           protected A8 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A8(e, i, c, t); }
  932           protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7); }
  933           protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  934           protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  935           protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  936           protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  937           protected Object targetA8(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  938           protected Object targetA8(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  939           protected Object targetA8(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  940           protected Object targetA8(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  941           protected Object targetA8(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
  942           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  943           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  944           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  945           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  946           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  947           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  948           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  949           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  950           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  951           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  952           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  953           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  954           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  955           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  956           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  957           protected Object invoke_L(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  958           protected int    invoke_I(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  959           protected long   invoke_J(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  960           protected Object invoke_L(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  961           protected int    invoke_I(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  962           protected long   invoke_J(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  963           protected Object invoke_L(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  964           protected int    invoke_I(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  965           protected long   invoke_J(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  966           protected Object invoke_L(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  967           protected int    invoke_I(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  968           protected long   invoke_J(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); }
  969       }
  970       static class A9 extends Adapter {
  971           protected A9(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
  972           protected A9(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
  973           protected A9 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A9(e, i, c, t); }
  974           protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  975           protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  976           protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  977           protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  978           protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  979           protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  980           protected Object targetA9(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  981           protected Object targetA9(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  982           protected Object targetA9(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  983           protected Object targetA9(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  984           protected Object targetA9(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
  985           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  986           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  987           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  988           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  989           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  990           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  991           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  992           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  993           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  994           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  995           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  996           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  997           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  998           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
  999           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1000           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1001           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1002           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1003           protected Object invoke_L(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1004           protected int    invoke_I(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1005           protected long   invoke_J(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1006           protected Object invoke_L(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1007           protected int    invoke_I(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1008           protected long   invoke_J(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1009           protected Object invoke_L(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1010           protected int    invoke_I(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1011           protected long   invoke_J(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1012           protected Object invoke_L(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1013           protected int    invoke_I(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1014           protected long   invoke_J(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
 1015       }
 1016       static class A10 extends Adapter {
 1017           protected A10(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
 1018           protected A10(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
 1019           protected A10 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A10(e, i, c, t); }
 1020           protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9)   throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1021           protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1022           protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1023           protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1024           protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1025           protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1026           protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1027           protected Object targetA10(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1028           protected Object targetA10(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1029           protected Object targetA10(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1030           protected Object targetA10(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1031           protected Object targetA10(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
 1032           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1033           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1034           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1035           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1036           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1037           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1038           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1039           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1040           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1041           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1042           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1043           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1044           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1045           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1046           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1047           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1048           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1049           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1050           protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1051           protected int    invoke_I(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1052           protected long   invoke_J(Object a0, Object a1, Object a2, Object a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1053           protected Object invoke_L(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1054           protected int    invoke_I(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1055           protected long   invoke_J(Object a0, Object a1, Object a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1056           protected Object invoke_L(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1057           protected int    invoke_I(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1058           protected long   invoke_J(Object a0, Object a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1059           protected Object invoke_L(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1060           protected int    invoke_I(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1061           protected long   invoke_J(Object a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1062           protected Object invoke_L(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1063           protected int    invoke_I(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1064           protected long   invoke_J(long   a0, long   a1, long   a2, long   a3, long   a4, long   a5, long   a6, long   a7, long   a8, long   a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
 1065       }
 1066   }

Home » openjdk-7 » java.lang.invoke » [javadoc | source]