private static MethodHandle bindWithFallback( MethodHandle mh, RoboCallSite site, MethodHandle fallback) { SwitchPoint switchPoint = getInvalidator(site.getCaller()); MethodType type = site.type(); MethodHandle boundFallback = foldArguments(exactInvoker(type), fallback.bindTo(site)); mh = switchPoint.guardWithTest(mh.asType(type), boundFallback); site.setTarget(mh); return mh; }