public IReadOnlyList <PreparedInvocation <object?> > PrepareInvocations( object request, CancellationToken cancellationToken = default) { if (!_inspector.TryGetMethodsAccepting(request.GetType(), _collisionStrategy, out var methods)) { throw new InvalidOperationException( $"Type '{_inspector.Type.Name}' doesn't support accepting requests " + $"of type '{request.GetType().Name}'."); } var preparedInvocations = methods.Select(method => { var recipientInstance = _factory.Get(); var acceptedCancellationToken = _methodAnalyzer.AcceptsCancellationToken(method); Func <object?> invocation = acceptedCancellationToken ? () => method.Invoke(recipientInstance, new object?[] { request, cancellationToken }) : () => method.Invoke(recipientInstance, new object?[] { request }); return(new PreparedInvocation <object?>(invocation, acceptedCancellationToken)); }); return(preparedInvocations.ToArray()); }