code: public SmartHandle applyLast(Object arg) {
          return new SmartHandle(signature.dropLast(), MethodHandles.insertArguments(handle, signature.type().parameterCount(), arg));
      }
docs: Apply an argument into the handle at the end, returning a new
  SmartHandle. The new handle will use the given value for the last
  argument, accepting one fewer argument as a result. In other words,
  fix that argument (partial application) into the given handle.
  
  @param arg  the argument value
  @return a new SmartHandle that already has applied the given argument