code: public SmartHandle cast(MethodType incoming) {
          return new SmartHandle(new Signature(incoming, signature.argNames()), MethodHandles.explicitCastArguments(handle, incoming));
      }
docs: Create a new SmartHandle that casts arguments from the given type to
  the current signature's type, using the same argument names. This casting
  is equivalent to MethodHandles#explicitCastArguments.
  
  @param incoming the target MethodType from which arguments will be converted
  @return a new SmartHandle that accepts the given argument types