"Applies an arbitrary [[Callable]] to the given [[arguments|args]]. The arguments must be packaged into a [[Tuple]] whose type is compatible with the `Callable` type. For example, given the following argument tuple: [Boolean(Character), Boolean, Boolean] tuple = [Character.whitespace, true, false]; We can apply [[String.split]] to the arguments given in `tuple` as follows: String string = ... ; {String*} strings = apply(string.split, tuple); Application may be abbreviated using the spread operator: String string = ... ; {String*} strings = string.split(*tuple) In practice, this behaves as if the `Callable` were called with the elements of the tuple as its arguments. The examples above are both equivalent to: string.split(Character.whitespace, true, false)" see (`function unflatten`) tagged("Functions") shared Return apply<Return,Args> (Callable<Return,Args> f, Args args) given Args satisfies Anything[] => f(*args);