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());
        }