//
// Automatically generated by ipdlc.
// Edit at your own risk
//


#include "mozilla/dom/localstorage/SerializationHelpers.h"
#include "mozilla/ipc/PBackgroundParent.h"
#include "mozilla/ipc/PBackgroundChild.h"
#include "mozilla/dom/PBackgroundLSDatabaseParent.h"
#include "mozilla/dom/PBackgroundLSDatabaseChild.h"
#include "mozilla/dom/localstorage/SerializationHelpers.h"
#include "mozilla/dom/PBackgroundLSSnapshot.h"
#include "mozilla/dom/PBackgroundLSSnapshotParent.h"
#include "mozilla/dom/PBackgroundLSSnapshotChild.h"

#include "ipc/IPCMessageUtils.h"
#include "ipc/IPCMessageUtilsSpecializations.h"
#include "nsIFile.h"
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/ProtocolMessageUtils.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/ipc/ShmemMessageUtils.h"
#include "mozilla/ipc/TaintingIPCUtils.h"

namespace mozilla {
namespace dom {
namespace PBackgroundLSSnapshot {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundLSSnapshotParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundLSSnapshotChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParentDestInfo, aChildDestInfo, aParent, aChild);
}
nsresult
CreateEndpoints(
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundLSSnapshotParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundLSSnapshotChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParent, aChild);
}
mozilla::UniquePtr<IPC::Message>
Msg_DeleteMe(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_DeleteMe__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_AsyncCheckpoint(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_AsyncCheckpoint__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_AsyncCheckpointAndNotify(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_AsyncCheckpointAndNotify__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_SyncCheckpoint(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_SyncCheckpoint__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_SyncCheckpoint(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_SyncCheckpoint__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_SyncCheckpointAndNotify(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_SyncCheckpointAndNotify__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_SyncCheckpointAndNotify(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_SyncCheckpointAndNotify__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_AsyncFinish(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_AsyncFinish__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_SyncFinish(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_SyncFinish__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_SyncFinish(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_SyncFinish__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_Loaded(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_Loaded__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_LoadValueAndMoreItems(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_LoadValueAndMoreItems__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_LoadValueAndMoreItems(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_LoadValueAndMoreItems__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_LoadKeys(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_LoadKeys__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_LoadKeys(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_LoadKeys__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_IncreasePeakUsage(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_IncreasePeakUsage__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_IncreasePeakUsage(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_IncreasePeakUsage__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::SYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_MarkDirty(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_MarkDirty__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}

} // namespace PBackgroundLSSnapshot
} // namespace dom
} // namespace mozilla

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct LSSetItemInfo|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::LSSetItemInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).key());
    // Sentinel = 'key'
    (aWriter)->WriteSentinel(42402122);
    IPC::WriteParam(aWriter, (aVar).value());
    // Sentinel = 'value'
    (aWriter)->WriteSentinel(107610654);
}

auto ParamTraits<::mozilla::dom::LSSetItemInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___key = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___key) {
        aReader->FatalError("Error deserializing 'key' (nsString) member of 'LSSetItemInfo'");
        return {};

    }
    auto& _key = *maybe___key;
    // Sentinel = 'key'
    if ((!((aReader)->ReadSentinel(42402122)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'key' (nsString) member of 'LSSetItemInfo'");
        return {};
    }
    auto maybe___value = IPC::ReadParam<::mozilla::dom::LSValue>(aReader);
    if (!maybe___value) {
        aReader->FatalError("Error deserializing 'value' (LSValue) member of 'LSSetItemInfo'");
        return {};

    }
    auto& _value = *maybe___value;
    // Sentinel = 'value'
    if ((!((aReader)->ReadSentinel(107610654)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'value' (LSValue) member of 'LSSetItemInfo'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_key),
            std::move(_value)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct LSRemoveItemInfo|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::LSRemoveItemInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).key());
    // Sentinel = 'key'
    (aWriter)->WriteSentinel(42402122);
}

auto ParamTraits<::mozilla::dom::LSRemoveItemInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___key = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___key) {
        aReader->FatalError("Error deserializing 'key' (nsString) member of 'LSRemoveItemInfo'");
        return {};

    }
    auto& _key = *maybe___key;
    // Sentinel = 'key'
    if ((!((aReader)->ReadSentinel(42402122)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'key' (nsString) member of 'LSRemoveItemInfo'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_key)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct LSClearInfo|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::LSClearInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
}

auto ParamTraits<::mozilla::dom::LSClearInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{std::in_place};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |union LSWriteInfo|
//
namespace mozilla {
namespace dom {
auto LSWriteInfo::MaybeDestroy() -> void
{
    if ((mType) == (T__None)) {
        return;
    }
    switch (mType) {
    case TLSSetItemInfo:
        {
            (ptr_LSSetItemInfo())->~LSSetItemInfo__tdef();
            break;
        }
    case TLSRemoveItemInfo:
        {
            (ptr_LSRemoveItemInfo())->~LSRemoveItemInfo__tdef();
            break;
        }
    case TLSClearInfo:
        {
            (ptr_LSClearInfo())->~LSClearInfo__tdef();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("not reached");
            break;
        }
    }
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(const LSSetItemInfo& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo(aOther);
    mType = TLSSetItemInfo;
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(LSSetItemInfo&& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo(std::move(aOther));
    mType = TLSSetItemInfo;
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(const LSRemoveItemInfo& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo(aOther);
    mType = TLSRemoveItemInfo;
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(LSRemoveItemInfo&& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo(std::move(aOther));
    mType = TLSRemoveItemInfo;
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(const LSClearInfo& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(aOther);
    mType = TLSClearInfo;
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(LSClearInfo&& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move(aOther));
    mType = TLSClearInfo;
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(const LSWriteInfo& aOther)
{
    (aOther).AssertSanity();
    switch ((aOther).type()) {
    case TLSSetItemInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo((aOther).get_LSSetItemInfo());
            break;
        }
    case TLSRemoveItemInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo((aOther).get_LSRemoveItemInfo());
            break;
        }
    case TLSClearInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo((aOther).get_LSClearInfo());
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    mType = (aOther).type();
}

MOZ_IMPLICIT LSWriteInfo::LSWriteInfo(LSWriteInfo&& aOther)
{
    (aOther).AssertSanity();
    Type t = (aOther).type();
    switch (t) {
    case TLSSetItemInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo(std::move((aOther).get_LSSetItemInfo()));
            (aOther).MaybeDestroy();
            break;
        }
    case TLSRemoveItemInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo(std::move((aOther).get_LSRemoveItemInfo()));
            (aOther).MaybeDestroy();
            break;
        }
    case TLSClearInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move((aOther).get_LSClearInfo()));
            (aOther).MaybeDestroy();
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    (aOther).mType = T__None;
    mType = t;
}

LSWriteInfo::~LSWriteInfo()
{
    MaybeDestroy();
}

auto LSWriteInfo::operator=(const LSSetItemInfo& aRhs) -> LSWriteInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo(aRhs);
    mType = TLSSetItemInfo;
    return (*(this));
}

auto LSWriteInfo::operator=(LSSetItemInfo&& aRhs) -> LSWriteInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo(std::move(aRhs));
    mType = TLSSetItemInfo;
    return (*(this));
}

auto LSWriteInfo::operator=(const LSRemoveItemInfo& aRhs) -> LSWriteInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo(aRhs);
    mType = TLSRemoveItemInfo;
    return (*(this));
}

auto LSWriteInfo::operator=(LSRemoveItemInfo&& aRhs) -> LSWriteInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo(std::move(aRhs));
    mType = TLSRemoveItemInfo;
    return (*(this));
}

auto LSWriteInfo::operator=(const LSClearInfo& aRhs) -> LSWriteInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(aRhs);
    mType = TLSClearInfo;
    return (*(this));
}

auto LSWriteInfo::operator=(LSClearInfo&& aRhs) -> LSWriteInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move(aRhs));
    mType = TLSClearInfo;
    return (*(this));
}

auto LSWriteInfo::operator=(const LSWriteInfo& aRhs) -> LSWriteInfo&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TLSSetItemInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo((aRhs).get_LSSetItemInfo());
            break;
        }
    case TLSRemoveItemInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo((aRhs).get_LSRemoveItemInfo());
            break;
        }
    case TLSClearInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo((aRhs).get_LSClearInfo());
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    mType = t;
    return (*(this));
}

auto LSWriteInfo::operator=(LSWriteInfo&& aRhs) -> LSWriteInfo&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TLSSetItemInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSSetItemInfo()) LSSetItemInfo(std::move((aRhs).get_LSSetItemInfo()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TLSRemoveItemInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSRemoveItemInfo()) LSRemoveItemInfo(std::move((aRhs).get_LSRemoveItemInfo()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TLSClearInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move((aRhs).get_LSClearInfo()));
            (aRhs).MaybeDestroy();
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    (aRhs).mType = T__None;
    mType = t;
    return (*(this));
}

} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::LSWriteInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    typedef ::mozilla::dom::LSWriteInfo union__;
    int type = (aVar).type();
    IPC::WriteParam(aWriter, type);
    // Sentinel = 'LSWriteInfo'
    (aWriter)->WriteSentinel(409273399);

    switch (type) {
    case union__::TLSSetItemInfo:
        {
            IPC::WriteParam(aWriter, (aVar).get_LSSetItemInfo());
            // Sentinel = 'TLSSetItemInfo'
            (aWriter)->WriteSentinel(630785339);
            return;
        }
    case union__::TLSRemoveItemInfo:
        {
            IPC::WriteParam(aWriter, (aVar).get_LSRemoveItemInfo());
            // Sentinel = 'TLSRemoveItemInfo'
            (aWriter)->WriteSentinel(948242045);
            return;
        }
    case union__::TLSClearInfo:
        {
            IPC::WriteParam(aWriter, (aVar).get_LSClearInfo());
            // Sentinel = 'TLSClearInfo'
            (aWriter)->WriteSentinel(455410791);
            return;
        }
    default:
        {
            aWriter->FatalError("unknown variant of union LSWriteInfo");
            return;
        }
    }
}

auto ParamTraits<::mozilla::dom::LSWriteInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    typedef ::mozilla::dom::LSWriteInfo union__;
    auto maybe__type = IPC::ReadParam<int>(aReader);
    if (!maybe__type) {
        aReader->FatalError("Error deserializing type of union LSWriteInfo");
        return {};

    }
    auto& type = *maybe__type;
    // Sentinel = 'LSWriteInfo'
    if ((!((aReader)->ReadSentinel(409273399)))) {
        mozilla::ipc::SentinelReadError("Error deserializing type of union LSWriteInfo");
        return {};
    }

    switch (type) {
    case union__::TLSSetItemInfo:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::LSSetItemInfo>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TLSSetItemInfo of union LSWriteInfo");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TLSSetItemInfo'
            if ((!((aReader)->ReadSentinel(630785339)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TLSSetItemInfo of union LSWriteInfo");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TLSRemoveItemInfo:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::LSRemoveItemInfo>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TLSRemoveItemInfo of union LSWriteInfo");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TLSRemoveItemInfo'
            if ((!((aReader)->ReadSentinel(948242045)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TLSRemoveItemInfo of union LSWriteInfo");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TLSClearInfo:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::LSClearInfo>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TLSClearInfo of union LSWriteInfo");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TLSClearInfo'
            if ((!((aReader)->ReadSentinel(455410791)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TLSClearInfo of union LSWriteInfo");
                return {};
            }
            return std::move(tmp);
        }
    default:
        {
            aReader->FatalError("unknown variant of union LSWriteInfo");
            return {};
        }
    }
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct LSSetItemAndNotifyInfo|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::LSSetItemAndNotifyInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).key());
    // Sentinel = 'key'
    (aWriter)->WriteSentinel(42402122);
    IPC::WriteParam(aWriter, (aVar).oldValue());
    // Sentinel = 'oldValue'
    (aWriter)->WriteSentinel(244384573);
    IPC::WriteParam(aWriter, (aVar).value());
    // Sentinel = 'value'
    (aWriter)->WriteSentinel(107610654);
}

auto ParamTraits<::mozilla::dom::LSSetItemAndNotifyInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___key = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___key) {
        aReader->FatalError("Error deserializing 'key' (nsString) member of 'LSSetItemAndNotifyInfo'");
        return {};

    }
    auto& _key = *maybe___key;
    // Sentinel = 'key'
    if ((!((aReader)->ReadSentinel(42402122)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'key' (nsString) member of 'LSSetItemAndNotifyInfo'");
        return {};
    }
    auto maybe___oldValue = IPC::ReadParam<::mozilla::dom::LSValue>(aReader);
    if (!maybe___oldValue) {
        aReader->FatalError("Error deserializing 'oldValue' (LSValue) member of 'LSSetItemAndNotifyInfo'");
        return {};

    }
    auto& _oldValue = *maybe___oldValue;
    // Sentinel = 'oldValue'
    if ((!((aReader)->ReadSentinel(244384573)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'oldValue' (LSValue) member of 'LSSetItemAndNotifyInfo'");
        return {};
    }
    auto maybe___value = IPC::ReadParam<::mozilla::dom::LSValue>(aReader);
    if (!maybe___value) {
        aReader->FatalError("Error deserializing 'value' (LSValue) member of 'LSSetItemAndNotifyInfo'");
        return {};

    }
    auto& _value = *maybe___value;
    // Sentinel = 'value'
    if ((!((aReader)->ReadSentinel(107610654)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'value' (LSValue) member of 'LSSetItemAndNotifyInfo'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_key),
            std::move(_oldValue),
            std::move(_value)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct LSRemoveItemAndNotifyInfo|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::LSRemoveItemAndNotifyInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).key());
    // Sentinel = 'key'
    (aWriter)->WriteSentinel(42402122);
    IPC::WriteParam(aWriter, (aVar).oldValue());
    // Sentinel = 'oldValue'
    (aWriter)->WriteSentinel(244384573);
}

auto ParamTraits<::mozilla::dom::LSRemoveItemAndNotifyInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___key = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___key) {
        aReader->FatalError("Error deserializing 'key' (nsString) member of 'LSRemoveItemAndNotifyInfo'");
        return {};

    }
    auto& _key = *maybe___key;
    // Sentinel = 'key'
    if ((!((aReader)->ReadSentinel(42402122)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'key' (nsString) member of 'LSRemoveItemAndNotifyInfo'");
        return {};
    }
    auto maybe___oldValue = IPC::ReadParam<::mozilla::dom::LSValue>(aReader);
    if (!maybe___oldValue) {
        aReader->FatalError("Error deserializing 'oldValue' (LSValue) member of 'LSRemoveItemAndNotifyInfo'");
        return {};

    }
    auto& _oldValue = *maybe___oldValue;
    // Sentinel = 'oldValue'
    if ((!((aReader)->ReadSentinel(244384573)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'oldValue' (LSValue) member of 'LSRemoveItemAndNotifyInfo'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_key),
            std::move(_oldValue)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |union LSWriteAndNotifyInfo|
//
namespace mozilla {
namespace dom {
auto LSWriteAndNotifyInfo::MaybeDestroy() -> void
{
    if ((mType) == (T__None)) {
        return;
    }
    switch (mType) {
    case TLSSetItemAndNotifyInfo:
        {
            (ptr_LSSetItemAndNotifyInfo())->~LSSetItemAndNotifyInfo__tdef();
            break;
        }
    case TLSRemoveItemAndNotifyInfo:
        {
            (ptr_LSRemoveItemAndNotifyInfo())->~LSRemoveItemAndNotifyInfo__tdef();
            break;
        }
    case TLSClearInfo:
        {
            (ptr_LSClearInfo())->~LSClearInfo__tdef();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("not reached");
            break;
        }
    }
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(const LSSetItemAndNotifyInfo& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo(aOther);
    mType = TLSSetItemAndNotifyInfo;
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(LSSetItemAndNotifyInfo&& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo(std::move(aOther));
    mType = TLSSetItemAndNotifyInfo;
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(const LSRemoveItemAndNotifyInfo& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo(aOther);
    mType = TLSRemoveItemAndNotifyInfo;
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(LSRemoveItemAndNotifyInfo&& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo(std::move(aOther));
    mType = TLSRemoveItemAndNotifyInfo;
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(const LSClearInfo& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(aOther);
    mType = TLSClearInfo;
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(LSClearInfo&& aOther)
{
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move(aOther));
    mType = TLSClearInfo;
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(const LSWriteAndNotifyInfo& aOther)
{
    (aOther).AssertSanity();
    switch ((aOther).type()) {
    case TLSSetItemAndNotifyInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo((aOther).get_LSSetItemAndNotifyInfo());
            break;
        }
    case TLSRemoveItemAndNotifyInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo((aOther).get_LSRemoveItemAndNotifyInfo());
            break;
        }
    case TLSClearInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo((aOther).get_LSClearInfo());
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    mType = (aOther).type();
}

MOZ_IMPLICIT LSWriteAndNotifyInfo::LSWriteAndNotifyInfo(LSWriteAndNotifyInfo&& aOther)
{
    (aOther).AssertSanity();
    Type t = (aOther).type();
    switch (t) {
    case TLSSetItemAndNotifyInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo(std::move((aOther).get_LSSetItemAndNotifyInfo()));
            (aOther).MaybeDestroy();
            break;
        }
    case TLSRemoveItemAndNotifyInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo(std::move((aOther).get_LSRemoveItemAndNotifyInfo()));
            (aOther).MaybeDestroy();
            break;
        }
    case TLSClearInfo:
        {
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move((aOther).get_LSClearInfo()));
            (aOther).MaybeDestroy();
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    (aOther).mType = T__None;
    mType = t;
}

LSWriteAndNotifyInfo::~LSWriteAndNotifyInfo()
{
    MaybeDestroy();
}

auto LSWriteAndNotifyInfo::operator=(const LSSetItemAndNotifyInfo& aRhs) -> LSWriteAndNotifyInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo(aRhs);
    mType = TLSSetItemAndNotifyInfo;
    return (*(this));
}

auto LSWriteAndNotifyInfo::operator=(LSSetItemAndNotifyInfo&& aRhs) -> LSWriteAndNotifyInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo(std::move(aRhs));
    mType = TLSSetItemAndNotifyInfo;
    return (*(this));
}

auto LSWriteAndNotifyInfo::operator=(const LSRemoveItemAndNotifyInfo& aRhs) -> LSWriteAndNotifyInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo(aRhs);
    mType = TLSRemoveItemAndNotifyInfo;
    return (*(this));
}

auto LSWriteAndNotifyInfo::operator=(LSRemoveItemAndNotifyInfo&& aRhs) -> LSWriteAndNotifyInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo(std::move(aRhs));
    mType = TLSRemoveItemAndNotifyInfo;
    return (*(this));
}

auto LSWriteAndNotifyInfo::operator=(const LSClearInfo& aRhs) -> LSWriteAndNotifyInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(aRhs);
    mType = TLSClearInfo;
    return (*(this));
}

auto LSWriteAndNotifyInfo::operator=(LSClearInfo&& aRhs) -> LSWriteAndNotifyInfo&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move(aRhs));
    mType = TLSClearInfo;
    return (*(this));
}

auto LSWriteAndNotifyInfo::operator=(const LSWriteAndNotifyInfo& aRhs) -> LSWriteAndNotifyInfo&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TLSSetItemAndNotifyInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo((aRhs).get_LSSetItemAndNotifyInfo());
            break;
        }
    case TLSRemoveItemAndNotifyInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo((aRhs).get_LSRemoveItemAndNotifyInfo());
            break;
        }
    case TLSClearInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo((aRhs).get_LSClearInfo());
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    mType = t;
    return (*(this));
}

auto LSWriteAndNotifyInfo::operator=(LSWriteAndNotifyInfo&& aRhs) -> LSWriteAndNotifyInfo&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TLSSetItemAndNotifyInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSSetItemAndNotifyInfo()) LSSetItemAndNotifyInfo(std::move((aRhs).get_LSSetItemAndNotifyInfo()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TLSRemoveItemAndNotifyInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSRemoveItemAndNotifyInfo()) LSRemoveItemAndNotifyInfo(std::move((aRhs).get_LSRemoveItemAndNotifyInfo()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TLSClearInfo:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_LSClearInfo()) LSClearInfo(std::move((aRhs).get_LSClearInfo()));
            (aRhs).MaybeDestroy();
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    (aRhs).mType = T__None;
    mType = t;
    return (*(this));
}

} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::LSWriteAndNotifyInfo>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    typedef ::mozilla::dom::LSWriteAndNotifyInfo union__;
    int type = (aVar).type();
    IPC::WriteParam(aWriter, type);
    // Sentinel = 'LSWriteAndNotifyInfo'
    (aWriter)->WriteSentinel(1331431363);

    switch (type) {
    case union__::TLSSetItemAndNotifyInfo:
        {
            IPC::WriteParam(aWriter, (aVar).get_LSSetItemAndNotifyInfo());
            // Sentinel = 'TLSSetItemAndNotifyInfo'
            (aWriter)->WriteSentinel(1706297543);
            return;
        }
    case union__::TLSRemoveItemAndNotifyInfo:
        {
            IPC::WriteParam(aWriter, (aVar).get_LSRemoveItemAndNotifyInfo());
            // Sentinel = 'TLSRemoveItemAndNotifyInfo'
            (aWriter)->WriteSentinel(2213677577);
            return;
        }
    case union__::TLSClearInfo:
        {
            IPC::WriteParam(aWriter, (aVar).get_LSClearInfo());
            // Sentinel = 'TLSClearInfo'
            (aWriter)->WriteSentinel(455410791);
            return;
        }
    default:
        {
            aWriter->FatalError("unknown variant of union LSWriteAndNotifyInfo");
            return;
        }
    }
}

auto ParamTraits<::mozilla::dom::LSWriteAndNotifyInfo>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    typedef ::mozilla::dom::LSWriteAndNotifyInfo union__;
    auto maybe__type = IPC::ReadParam<int>(aReader);
    if (!maybe__type) {
        aReader->FatalError("Error deserializing type of union LSWriteAndNotifyInfo");
        return {};

    }
    auto& type = *maybe__type;
    // Sentinel = 'LSWriteAndNotifyInfo'
    if ((!((aReader)->ReadSentinel(1331431363)))) {
        mozilla::ipc::SentinelReadError("Error deserializing type of union LSWriteAndNotifyInfo");
        return {};
    }

    switch (type) {
    case union__::TLSSetItemAndNotifyInfo:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::LSSetItemAndNotifyInfo>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TLSSetItemAndNotifyInfo of union LSWriteAndNotifyInfo");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TLSSetItemAndNotifyInfo'
            if ((!((aReader)->ReadSentinel(1706297543)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TLSSetItemAndNotifyInfo of union LSWriteAndNotifyInfo");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TLSRemoveItemAndNotifyInfo:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::LSRemoveItemAndNotifyInfo>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TLSRemoveItemAndNotifyInfo of union LSWriteAndNotifyInfo");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TLSRemoveItemAndNotifyInfo'
            if ((!((aReader)->ReadSentinel(2213677577)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TLSRemoveItemAndNotifyInfo of union LSWriteAndNotifyInfo");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TLSClearInfo:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::LSClearInfo>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TLSClearInfo of union LSWriteAndNotifyInfo");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TLSClearInfo'
            if ((!((aReader)->ReadSentinel(455410791)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TLSClearInfo of union LSWriteAndNotifyInfo");
                return {};
            }
            return std::move(tmp);
        }
    default:
        {
            aReader->FatalError("unknown variant of union LSWriteAndNotifyInfo");
            return {};
        }
    }
}

} // namespace IPC
