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