TestTransactionChangeHandler::SPtr TestTransactionChangeHandler::Create(
    __in KAllocator& allocator)
{
    SPtr result = _new(TESTTRANSACTIONOPERATION_TAG, allocator) TestTransactionChangeHandler();
    CODING_ERROR_ASSERT(result != nullptr);
    CODING_ERROR_ASSERT(NT_SUCCESS(result->Status()));

    return result;
}
NTSTATUS KeyCheckpointFileProperties::Create(
    __in KAllocator& allocator,
    __out KeyCheckpointFileProperties::SPtr& result)
{
    NTSTATUS status;
    SPtr output = _new(KEYCHECKPOINTFILEPROPERTIES_TAG, allocator) KeyCheckpointFileProperties();

    if (!output)
    {
        return STATUS_INSUFFICIENT_RESOURCES;
    }

    status = output->Status();
    if (!NT_SUCCESS(status))
    {
        return status;
    }

    result = Ktl::Move(output);
    return STATUS_SUCCESS;
}
NTSTATUS
FileCountMergeConfiguration::Create(__in ULONG32 mergeThreshold, __in KAllocator& allocator, __out SPtr & result)
{
    NTSTATUS status;

    SPtr output = _new(FileCountMergeConfiguration_Tag, allocator) FileCountMergeConfiguration(mergeThreshold);

    if (!output)
    {
        return STATUS_INSUFFICIENT_RESOURCES;
    }

    status = output->Status();
    if (!NT_SUCCESS(status))
    {
        return status;
    }

    result = Ktl::Move(output);
    return STATUS_SUCCESS;
}