void validateSessionOptions(const OperationSessionInfoFromClient& sessionOptions,
                            StringData cmdName,
                            StringData dbname) {
    if (sessionOptions.getAutocommit()) {
        uassertStatusOK(CommandHelpers::canUseTransactions(dbname, cmdName));
    }

    if (sessionOptions.getTxnNumber()) {
        uassert(50768,
                str::stream() << "It is illegal to provide a txnNumber for command " << cmdName,
                commandCanCheckOutSession(cmdName) || shouldCommandSkipSessionCheckout(cmdName));
    }

    if (sessionOptions.getStartTransaction()) {
        uassert(ErrorCodes::OperationNotSupportedInTransaction,
                "Cannot run killCursors as the first operation in a multi-document transaction.",
                cmdName != "killCursors");
    }
}