export type ArgumentsReducer = (previousArgs: T[], newArgs: T[]) => T[] export function AppendingArgumentsReducer(previousArgs: T[], newArgs: T[]): T[] { return [...previousArgs, ...newArgs]; } export function OverridingArgumentsReducer(previousArgs: T[], newArgs: T[]): T[] { return newArgs; }