#!/usr/bin/env python3
"""Generate callable, failure-only Rust shims from the authoritative catalog."""

from __future__ import annotations

import argparse
import csv
import json
import re
import subprocess
from collections import Counter
from pathlib import Path

import generate_rust_mapping as mapping

ROOT = Path(__file__).resolve().parents[1]
CATALOG = ROOT / "api/public-api.json"
LEDGER = ROOT / "api/RUST-MAPPING.tsv"
COVERAGE = ROOT / "api/SHIM-COVERAGE.md"
COMPILE_FIXTURE = ROOT / "tests/api-compile/src/lib.rs"

TARGETS = {
    "LibreMetaverse.Imaging.Abstractions": ROOT / "crates/libremetaverse-imaging/src/generated.rs",
    "LibreMetaverse.Imaging.Skia": ROOT / "crates/libremetaverse-imaging-skia/src/generated.rs",
    "LibreMetaverse.LslTools": ROOT / "crates/libremetaverse-lsl-tools/src/generated.rs",
    "LibreMetaverse.PrimMesher": ROOT / "crates/libremetaverse-prim-mesher/src/generated.rs",
    "LibreMetaverse.RLV": ROOT / "crates/libremetaverse-rlv/src/generated.rs",
    "LibreMetaverse.Rendering.MeshFoundry": ROOT / "crates/libremetaverse-rendering-mesh-foundry/src/generated.rs",
    "LibreMetaverse.Rendering.Simple": ROOT / "crates/libremetaverse-rendering-simple/src/generated.rs",
    "LibreMetaverse.Types": ROOT / "crates/libremetaverse-types/src/generated.rs",
    "LibreMetaverse.StructuredData": ROOT / "crates/libremetaverse-structured-data/src/generated.rs",
    "LibreMetaverse.Utilities": ROOT / "crates/libremetaverse-utilities/src/generated.rs",
    "LibreMetaverse.Voice.Vivox": ROOT / "crates/libremetaverse-voice-vivox/src/generated.rs",
    "LibreMetaverse.Voice.WebRTC": ROOT / "crates/libremetaverse-voice-webrtc/src/generated.rs",
}

# Types whose failure-only generated shells have been replaced by native Rust
# implementations. The generated module keeps catalog markers and re-exports
# the hand-written type so coverage remains deterministic.
NATIVE_TYPES = {
    "T:LibreMetaverse.LslTools.CSToolsException": "crate::lexer::CSToolsException",
    "T:LibreMetaverse.LslTools.CSToolsFatalException": "crate::lexer::CSToolsFatalException",
    "T:LibreMetaverse.LslTools.CSToolsStopException": "crate::lexer::CSToolsStopException",
    "T:LibreMetaverse.LslTools.CatTest": "crate::lexer::CatTest",
    "T:LibreMetaverse.LslTools.Charset": "crate::lexer::Charset",
    "T:LibreMetaverse.LslTools.CSymbol": "crate::parser::CSymbol",
    "T:LibreMetaverse.LslTools.CSymbol.SymType": "crate::parser::CSymbolSymType",
    "T:LibreMetaverse.LslTools.CommentList": "crate::lexer::CommentList",
    "T:LibreMetaverse.LslTools.CsReader": "crate::lexer::CsReader",
    "T:LibreMetaverse.LslTools.Dfa": "crate::lexer::Dfa",
    "T:LibreMetaverse.LslTools.Dfa.Action": "crate::lexer::DfaAction",
    "T:LibreMetaverse.LslTools.EOF": "crate::lexer::EOF",
    "T:LibreMetaverse.LslTools.ErrorHandler": "crate::lexer::ErrorHandler",
    "T:LibreMetaverse.LslTools.Error": "crate::parser::LslError",
    "T:LibreMetaverse.LslTools.Lexer": "crate::lexer::Lexer",
    "T:LibreMetaverse.LslTools.Lexer._Enumerator": "crate::lexer::LexerEnumerator",
    "T:LibreMetaverse.LslTools.LineList": "crate::lexer::LineList",
    "T:LibreMetaverse.LslTools.LineManager": "crate::lexer::LineManager",
    "T:LibreMetaverse.LslTools.Literal": "crate::parser::Literal",
    "T:LibreMetaverse.LslTools.Null": "crate::lexer::Null",
    "T:LibreMetaverse.LslTools.ObjectList": "crate::lexer::ObjectList",
    "T:LibreMetaverse.LslTools.ParseStackEntry": "crate::parser::ParseStackEntry",
    "T:LibreMetaverse.LslTools.ParseState": "crate::parser::ParseState",
    "T:LibreMetaverse.LslTools.Parser": "crate::parser::Parser",
    "T:LibreMetaverse.LslTools.ParserAction": "crate::parser::ParserAction",
    "T:LibreMetaverse.LslTools.ParserEntry": "crate::parser::ParserEntry",
    "T:LibreMetaverse.LslTools.ParserOldAction": "crate::parser::ParserOldAction",
    "T:LibreMetaverse.LslTools.ParserReduce": "crate::parser::ParserReduce",
    "T:LibreMetaverse.LslTools.ParserShift": "crate::parser::ParserShift",
    "T:LibreMetaverse.LslTools.ParserSimpleAction": "crate::parser::ParserSimpleAction",
    "T:LibreMetaverse.LslTools.ParsingInfo": "crate::parser::ParsingInfo",
    "T:LibreMetaverse.LslTools.Precedence": "crate::parser::Precedence",
    "T:LibreMetaverse.LslTools.Precedence.PrecType": "crate::parser::PrecedencePrecType",
    "T:LibreMetaverse.LslTools.ProdItem": "crate::parser::ProdItem",
    "T:LibreMetaverse.LslTools.Production": "crate::parser::Production",
    "T:LibreMetaverse.LslTools.ResWds": "crate::lexer::ResWds",
    "T:LibreMetaverse.LslTools.SYMBOL": "crate::lexer::SYMBOL",
    "T:LibreMetaverse.LslTools.SourceLineInfo": "crate::lexer::SourceLineInfo",
    "T:LibreMetaverse.LslTools.SymbolSet": "crate::parser::SymbolSet",
    "T:LibreMetaverse.LslTools.TOKEN": "crate::lexer::TOKEN",
    "T:LibreMetaverse.LslTools.Transition": "crate::parser::Transition",
    "T:LibreMetaverse.LslTools.YyLexer": "crate::lexer::YyLexer",
    "T:LibreMetaverse.LslTools.YyParser": "crate::parser::YyParser",
    "T:LibreMetaverse.LslTools.recoveredError": "crate::parser::RecoveredError",
    "T:LibreMetaverse.RLV.AttachmentRequest": "crate::service::AttachmentRequest",
    "T:LibreMetaverse.RLV.RlvActionCallbacksDefault": "crate::service::RlvActionCallbacksDefault",
    "T:LibreMetaverse.RLV.RlvCallbacksDefault": "crate::service::RlvCallbacksDefault",
    "T:LibreMetaverse.RLV.RlvCommandProcessor": "crate::service::RlvCommandProcessor",
    "T:LibreMetaverse.RLV.RlvService": "crate::service::RlvService",
    "T:LibreMetaverse.AISResponseMeta": "crate::inventory_ais::AISResponseMeta",
    "T:LibreMetaverse.AccountLevelBenefits": "crate::login::AccountLevelBenefits",
    "T:LibreMetaverse.AgentDisplayName": "crate::message_decoder::AgentDisplayName",
    "T:LibreMetaverse.AgentDataReplyEventArgs": "crate::agent_messages::AgentDataReplyEventArgs",
    "T:LibreMetaverse.AgentAccessEventArgs": "crate::agent_messages::AgentAccessEventArgs",
    "T:LibreMetaverse.AgentExperiencesEventArgs": "crate::agent_messages::AgentExperiencesEventArgs",
    "T:LibreMetaverse.AgentPreferencesEventArgs": "crate::agent_messages::AgentPreferencesEventArgs",
    "T:LibreMetaverse.AgentManager.AgentMovement": "crate::agent_movement::AgentManagerAgentMovement",
    "T:LibreMetaverse.AgentManager.AgentMovement.AgentCamera": "crate::agent_movement::AgentManagerAgentMovementAgentCamera",
    "T:LibreMetaverse.AnimationsChangedEventArgs": "crate::agent_messages::AnimationsChangedEventArgs",
    "T:LibreMetaverse.AvatarSitResponseEventArgs": "crate::agent_movement::AvatarSitResponseEventArgs",
    "T:LibreMetaverse.AvatarRenderInfoEventArgs": "crate::agent_messages::AvatarRenderInfoEventArgs",
    "T:LibreMetaverse.BalanceEventArgs": "crate::agent_messages::BalanceEventArgs",
    "T:LibreMetaverse.CapabilitiesReceivedEventArgs": "crate::caps::CapabilitiesReceivedEventArgs",
    "T:LibreMetaverse.Caps": "crate::caps::Caps",
    "T:LibreMetaverse.CapsRateLimiter": "crate::caps_http::CapsRateLimiter",
    "T:LibreMetaverse.CapsRateLimiterOptions": "crate::caps_http::CapsRateLimiterOptions",
    "T:LibreMetaverse.Http.DownloadManager": "crate::download_manager::DownloadManager",
    "T:LibreMetaverse.Http.DownloadRequest": "crate::download_manager::DownloadRequest",
    "T:LibreMetaverse.Http.EventQueueClient": "crate::event_queue::EventQueueClient",
    "T:LibreMetaverse.Http.EventQueueClient.ConnectedCallback": "crate::event_queue::EventQueueClientConnectedCallback",
    "T:LibreMetaverse.Http.EventQueueClient.EventCallback": "crate::event_queue::EventQueueClientEventCallback",
    "T:LibreMetaverse.HttpCapsClient": "crate::caps_http::HttpCapsClient",
    "T:LibreMetaverse.HttpCapsClient.ProgressReport": "crate::caps_http::HttpCapsClientProgressReport",
    "T:LibreMetaverse.InstantMessage": "crate::agent_manager::InstantMessage",
    "T:LibreMetaverse.InstantMessageEventArgs": "crate::agent_manager::InstantMessageEventArgs",
    "T:LibreMetaverse.Inventory": "crate::inventory::Inventory",
    "T:LibreMetaverse.InventoryAnimation": "crate::inventory::InventoryAnimation",
    "T:LibreMetaverse.InventoryAttachment": "crate::inventory::InventoryAttachment",
    "T:LibreMetaverse.InventoryBase": "crate::inventory::InventoryBase",
    "T:LibreMetaverse.InventoryCallingCard": "crate::inventory::InventoryCallingCard",
    "T:LibreMetaverse.InventoryCategory": "crate::inventory::InventoryCategory",
    "T:LibreMetaverse.InventoryFolder": "crate::inventory::InventoryFolder",
    "T:LibreMetaverse.InventoryGesture": "crate::inventory::InventoryGesture",
    "T:LibreMetaverse.InventoryItem": "crate::inventory::InventoryItem",
    "T:LibreMetaverse.InventoryLSL": "crate::inventory::InventoryLSL",
    "T:LibreMetaverse.InventoryLandmark": "crate::inventory::InventoryLandmark",
    "T:LibreMetaverse.InventoryMaterial": "crate::inventory::InventoryMaterial",
    "T:LibreMetaverse.InventoryNode": "crate::inventory::InventoryNode",
    "T:LibreMetaverse.InventoryNodeDictionary": "crate::inventory::InventoryNodeDictionary",
    "T:LibreMetaverse.Marketplace.MarketplaceErrorEventArgs": "crate::marketplace_runtime::MarketplaceErrorEventArgs",
    "T:LibreMetaverse.Marketplace.MarketplaceFolderClassifier": "crate::marketplace_runtime::MarketplaceFolderClassifier",
    "T:LibreMetaverse.Marketplace.MarketplaceListing": "crate::marketplace_runtime::MarketplaceListing",
    "T:LibreMetaverse.Marketplace.MarketplaceListingChangedEventArgs": "crate::marketplace_runtime::MarketplaceListingChangedEventArgs",
    "T:LibreMetaverse.Marketplace.MarketplaceListingsSyncedEventArgs": "crate::marketplace_runtime::MarketplaceListingsSyncedEventArgs",
    "T:LibreMetaverse.Marketplace.MarketplaceManager": "crate::marketplace_runtime::MarketplaceManager",
    "T:LibreMetaverse.InventoryNotecard": "crate::inventory::InventoryNotecard",
    "T:LibreMetaverse.InventoryObject": "crate::inventory::InventoryObject",
    "T:LibreMetaverse.InventoryObjectAddedEventArgs": "crate::inventory::InventoryObjectAddedEventArgs",
    "T:LibreMetaverse.InventoryObjectRemovedEventArgs": "crate::inventory::InventoryObjectRemovedEventArgs",
    "T:LibreMetaverse.InventoryObjectUpdatedEventArgs": "crate::inventory::InventoryObjectUpdatedEventArgs",
    "T:LibreMetaverse.InventoryObjectOfferedEventArgs": "crate::inventory_manager::InventoryObjectOfferedEventArgs",
    "T:LibreMetaverse.InventoryManager.CopyItemsResult": "crate::inventory_manager::InventoryManagerCopyItemsResult",
    "T:LibreMetaverse.InventoryManager.FolderUpdateResult": "crate::inventory_manager::InventoryManagerFolderUpdateResult",
    "T:LibreMetaverse.ItemReceivedEventArgs": "crate::inventory_manager::ItemReceivedEventArgs",
    "T:LibreMetaverse.InventorySettings": "crate::inventory::InventorySettings",
    "T:LibreMetaverse.InventorySnapshot": "crate::inventory::InventorySnapshot",
    "T:LibreMetaverse.InventorySound": "crate::inventory::InventorySound",
    "T:LibreMetaverse.InventoryTexture": "crate::inventory::InventoryTexture",
    "T:LibreMetaverse.InventoryWearable": "crate::inventory::InventoryWearable",
    "T:LibreMetaverse.Permissions": "crate::inventory::Permissions",
    "T:LibreMetaverse.FindObjectByPathReplyEventArgs": "crate::inventory_manager::FindObjectByPathReplyEventArgs",
    "T:LibreMetaverse.FolderUpdatedEventArgs": "crate::inventory_manager::FolderUpdatedEventArgs",
    "T:LibreMetaverse.SaveAssetToInventoryEventArgs": "crate::inventory_manager::SaveAssetToInventoryEventArgs",
    "T:LibreMetaverse.ScriptRunningReplyEventArgs": "crate::inventory_manager::ScriptRunningReplyEventArgs",
    "T:LibreMetaverse.TaskInventoryReplyEventArgs": "crate::inventory_manager::TaskInventoryReplyEventArgs",
    "T:LibreMetaverse.TaskItemReceivedEventArgs": "crate::inventory_manager::TaskItemReceivedEventArgs",
    "T:LibreMetaverse.ChatEventArgs": "crate::agent_messages::ChatEventArgs",
    "T:LibreMetaverse.ChatSessionMember": "crate::agent_messages::ChatSessionMember",
    "T:LibreMetaverse.ChatSessionMemberAddedEventArgs": "crate::agent_messages::ChatSessionMemberAddedEventArgs",
    "T:LibreMetaverse.ChatSessionMemberLeftEventArgs": "crate::agent_messages::ChatSessionMemberLeftEventArgs",
    "T:LibreMetaverse.CameraConstraintEventArgs": "crate::agent_movement::CameraConstraintEventArgs",
    "T:LibreMetaverse.Assets.AssetGesture": "crate::gesture::AssetGesture",
    "T:LibreMetaverse.AssetCache": "crate::asset_cache::AssetCache",
    "T:LibreMetaverse.AssetCache.ComputeAssetCacheFilenameDelegate": "crate::asset_cache::AssetCacheComputeAssetCacheFilenameDelegate",
    "T:LibreMetaverse.AssetManager": "crate::asset_manager::AssetManager",
    "T:LibreMetaverse.AssetDownload": "crate::transfers::AssetDownload",
    "T:LibreMetaverse.ImageDownload": "crate::transfers::ImageDownload",
    "T:LibreMetaverse.AssetUpload": "crate::transfers::AssetUpload",
    "T:LibreMetaverse.AssetUploadEventArgs": "crate::transfers::AssetUploadEventArgs",
    "T:LibreMetaverse.Transfer": "crate::transfers::Transfer",
    "T:LibreMetaverse.ImageReceiveProgressEventArgs": "crate::transfers::ImageReceiveProgressEventArgs",
    "T:LibreMetaverse.InitiateDownloadEventArgs": "crate::transfers::InitiateDownloadEventArgs",
    "T:LibreMetaverse.XferDownload": "crate::transfers::XferDownload",
    "T:LibreMetaverse.XferReceivedEventArgs": "crate::transfers::XferReceivedEventArgs",
    "T:LibreMetaverse.Assets.Asset": "crate::asset_models::Asset",
    "T:LibreMetaverse.Assets.AssetAnimation": "crate::asset_models::AssetAnimation",
    "T:LibreMetaverse.Assets.AssetBodypart": "crate::asset_models::AssetBodypart",
    "T:LibreMetaverse.Assets.AssetCallingCard": "crate::asset_models::AssetCallingCard",
    "T:LibreMetaverse.Assets.AssetClothing": "crate::asset_models::AssetClothing",
    "T:LibreMetaverse.Assets.AssetLandmark": "crate::asset_models::AssetLandmark",
    "T:LibreMetaverse.Assets.AssetMaterial": "crate::asset_material::AssetMaterial",
    "T:LibreMetaverse.Assets.AssetMesh": "crate::asset_models::AssetMesh",
    "T:LibreMetaverse.Assets.AssetMutable": "crate::asset_models::AssetMutable",
    "T:LibreMetaverse.Assets.AssetNotecard": "crate::asset_models::AssetNotecard",
    "T:LibreMetaverse.Assets.AssetScriptBinary": "crate::asset_models::AssetScriptBinary",
    "T:LibreMetaverse.Assets.AssetScriptText": "crate::asset_models::AssetScriptText",
    "T:LibreMetaverse.Assets.AssetSettings": "crate::asset_models::AssetSettings",
    "T:LibreMetaverse.Assets.AssetSound": "crate::asset_models::AssetSound",
    "T:LibreMetaverse.Assets.AssetTexture": "crate::asset_models::AssetTexture",
    "T:LibreMetaverse.Assets.AssetWearable": "crate::asset_models::AssetWearable",
    "T:LibreMetaverse.Assets.GltfTextureTransform": "crate::asset_material::GltfTextureTransform",
    "T:LibreMetaverse.Assets.Gltf.GltfAccessor": "crate::gltf::GltfAccessor",
    "T:LibreMetaverse.Assets.Gltf.GltfAnimation": "crate::gltf::GltfAnimation",
    "T:LibreMetaverse.Assets.Gltf.GltfAnimationChannel": "crate::gltf::GltfAnimationChannel",
    "T:LibreMetaverse.Assets.Gltf.GltfAnimationChannelTarget": "crate::gltf::GltfAnimationChannelTarget",
    "T:LibreMetaverse.Assets.Gltf.GltfAnimationSampler": "crate::gltf::GltfAnimationSampler",
    "T:LibreMetaverse.Assets.Gltf.GltfBuffer": "crate::gltf::GltfBuffer",
    "T:LibreMetaverse.Assets.Gltf.GltfBufferView": "crate::gltf::GltfBufferView",
    "T:LibreMetaverse.Assets.Gltf.GltfDocument": "crate::gltf::GltfDocument",
    "T:LibreMetaverse.Assets.Gltf.GltfDocumentMaterial": "crate::gltf::GltfDocumentMaterial",
    "T:LibreMetaverse.Assets.Gltf.GltfImage": "crate::gltf::GltfImage",
    "T:LibreMetaverse.Assets.Gltf.GltfMesh": "crate::gltf::GltfMesh",
    "T:LibreMetaverse.Assets.Gltf.GltfNode": "crate::gltf::GltfNode",
    "T:LibreMetaverse.Assets.Gltf.GltfNormalTextureRef": "crate::gltf::GltfNormalTextureRef",
    "T:LibreMetaverse.Assets.Gltf.GltfOcclusionTextureRef": "crate::gltf::GltfOcclusionTextureRef",
    "T:LibreMetaverse.Assets.Gltf.GltfPrimitive": "crate::gltf::GltfPrimitive",
    "T:LibreMetaverse.Assets.Gltf.GltfSampler": "crate::gltf::GltfSampler",
    "T:LibreMetaverse.Assets.Gltf.GltfScene": "crate::gltf::GltfScene",
    "T:LibreMetaverse.Assets.Gltf.GltfSkin": "crate::gltf::GltfSkin",
    "T:LibreMetaverse.Assets.Gltf.GltfTexture": "crate::gltf::GltfTexture",
    "T:LibreMetaverse.Assets.Gltf.GltfTextureRef": "crate::gltf::GltfTextureRef",
    "T:LibreMetaverse.Assets.TarArchiveReader": "crate::asset_archive::TarArchiveReader",
    "T:LibreMetaverse.Assets.TarArchiveWriter": "crate::asset_archive::TarArchiveWriter",
    "T:LibreMetaverse.Assets.OarFile.AssetLoadedCallback": "crate::asset_archive::OarFileAssetLoadedCallback",
    "T:LibreMetaverse.Assets.OarFile.SceneObjectLoadedCallback": "crate::asset_archive::OarFileSceneObjectLoadedCallback",
    "T:LibreMetaverse.Assets.OarFile.SettingsLoadedCallback": "crate::asset_archive::OarFileSettingsLoadedCallback",
    "T:LibreMetaverse.Assets.OarFile.TerrainLoadedCallback": "crate::asset_archive::OarFileTerrainLoadedCallback",
    "T:LibreMetaverse.Assets.RegionSettings": "crate::asset_archive::RegionSettings",
    "T:LibreMetaverse.ImportExport.ColladaLoader": "crate::model_workflow::ColladaLoader",
    "T:LibreMetaverse.ImportExport.ModelFace": "crate::model_workflow::ModelFace",
    "T:LibreMetaverse.ImportExport.ModelMaterial": "crate::model_workflow::ModelMaterial",
    "T:LibreMetaverse.ImportExport.ModelPrim": "crate::model_workflow::ModelPrim",
    "T:LibreMetaverse.ImportExport.ModelUploader": "crate::model_workflow::ModelUploader",
    "T:LibreMetaverse.GLTFMaterialUpdate": "crate::object_material::GLTFMaterialUpdate",
    "T:LibreMetaverse.Assets.GestureStep": "crate::gesture::GestureStep",
    "T:LibreMetaverse.Assets.GestureStepAnimation": "crate::gesture::GestureStepAnimation",
    "T:LibreMetaverse.Assets.GestureStepChat": "crate::gesture::GestureStepChat",
    "T:LibreMetaverse.Assets.GestureStepEOF": "crate::gesture::GestureStepEOF",
    "T:LibreMetaverse.Assets.GestureStepSound": "crate::gesture::GestureStepSound",
    "T:LibreMetaverse.Assets.GestureStepWait": "crate::gesture::GestureStepWait",
    "T:LibreMetaverse.ExperienceInfoEventArgs": "crate::agent_messages::ExperienceInfoEventArgs",
    "T:LibreMetaverse.ExperiencePreferencesEventArgs": "crate::agent_messages::ExperiencePreferencesEventArgs",
    "T:LibreMetaverse.EstateBansReplyEventArgs": "crate::estate_tools::EstateBansReplyEventArgs",
    "T:LibreMetaverse.EstateCovenantReplyEventArgs": "crate::estate_tools::EstateCovenantReplyEventArgs",
    "T:LibreMetaverse.EstateExperienceReplyEventArgs": "crate::estate_tools::EstateExperienceReplyEventArgs",
    "T:LibreMetaverse.EstateGroupsReplyEventArgs": "crate::estate_tools::EstateGroupsReplyEventArgs",
    "T:LibreMetaverse.EstateManagersReplyEventArgs": "crate::estate_tools::EstateManagersReplyEventArgs",
    "T:LibreMetaverse.EstateTask": "crate::estate_tools::EstateTask",
    "T:LibreMetaverse.EstateTools": "crate::estate_tools::EstateTools",
    "T:LibreMetaverse.EstateUpdateInfoReplyEventArgs": "crate::estate_tools::EstateUpdateInfoReplyEventArgs",
    "T:LibreMetaverse.EstateUsersReplyEventArgs": "crate::estate_tools::EstateUsersReplyEventArgs",
    "T:LibreMetaverse.RegionRestartSchedule": "crate::estate_tools::RegionRestartSchedule",
    "T:LibreMetaverse.TopCollidersReplyEventArgs": "crate::estate_tools::TopCollidersReplyEventArgs",
    "T:LibreMetaverse.TopScriptsReplyEventArgs": "crate::estate_tools::TopScriptsReplyEventArgs",
    "T:LibreMetaverse.GroupChatJoinedEventArgs": "crate::agent_messages::GroupChatJoinedEventArgs",
    "T:LibreMetaverse.RegionExperiencesEventArgs": "crate::agent_messages::RegionExperiencesEventArgs",
    "T:LibreMetaverse.SetDisplayNameReplyEventArgs": "crate::agent_messages::SetDisplayNameReplyEventArgs",
    "T:LibreMetaverse.SlurlParser": "crate::slurl::SlurlParser",
    "T:LibreMetaverse.GridManager": "crate::grid_manager::GridManager",
    "T:LibreMetaverse.GridRegion": "crate::grid_manager::GridRegion",
    "T:LibreMetaverse.GridLayer": "crate::grid_manager::GridLayer",
    "T:LibreMetaverse.MapItem": "crate::grid_manager::MapItem",
    "T:LibreMetaverse.MapAgentLocation": "crate::grid_manager::MapAgentLocation",
    "T:LibreMetaverse.MapLandForSale": "crate::grid_manager::MapLandForSale",
    "T:LibreMetaverse.MapAdultLandForSale": "crate::grid_manager::MapAdultLandForSale",
    "T:LibreMetaverse.MapPGEvent": "crate::grid_manager::MapPGEvent",
    "T:LibreMetaverse.MapMatureEvent": "crate::grid_manager::MapMatureEvent",
    "T:LibreMetaverse.MapAdultEvent": "crate::grid_manager::MapAdultEvent",
    "T:LibreMetaverse.MapTelehub": "crate::grid_manager::MapTelehub",
    "T:LibreMetaverse.CoarseLocationUpdateEventArgs": "crate::grid_manager::CoarseLocationUpdateEventArgs",
    "T:LibreMetaverse.GridItemsEventArgs": "crate::grid_manager::GridItemsEventArgs",
    "T:LibreMetaverse.GridLayerEventArgs": "crate::grid_manager::GridLayerEventArgs",
    "T:LibreMetaverse.GridRegionEventArgs": "crate::grid_manager::GridRegionEventArgs",
    "T:LibreMetaverse.RegionHandleReplyEventArgs": "crate::grid_manager::RegionHandleReplyEventArgs",
    "T:LibreMetaverse.SimulatorFeatures": "crate::grid_manager::SimulatorFeatures",
    "T:LibreMetaverse.DirectoryManager": "crate::directory_manager::DirectoryManager",
    "T:LibreMetaverse.DirectoryManager.AgentSearchData": "crate::directory_manager::DirectoryManagerAgentSearchData",
    "T:LibreMetaverse.DirectoryManager.Classified": "crate::directory_manager::DirectoryManagerClassified",
    "T:LibreMetaverse.DirectoryManager.DirectoryParcel": "crate::directory_manager::DirectoryManagerDirectoryParcel",
    "T:LibreMetaverse.DirectoryManager.EventInfo": "crate::directory_manager::DirectoryManagerEventInfo",
    "T:LibreMetaverse.DirectoryManager.EventsSearchData": "crate::directory_manager::DirectoryManagerEventsSearchData",
    "T:LibreMetaverse.DirectoryManager.GroupSearchData": "crate::directory_manager::DirectoryManagerGroupSearchData",
    "T:LibreMetaverse.DirectoryManager.PlacesSearchData": "crate::directory_manager::DirectoryManagerPlacesSearchData",
    "T:LibreMetaverse.DirClassifiedsReplyEventArgs": "crate::directory_manager::DirClassifiedsReplyEventArgs",
    "T:LibreMetaverse.DirEventsReplyEventArgs": "crate::directory_manager::DirEventsReplyEventArgs",
    "T:LibreMetaverse.DirGroupsReplyEventArgs": "crate::directory_manager::DirGroupsReplyEventArgs",
    "T:LibreMetaverse.DirLandReplyEventArgs": "crate::directory_manager::DirLandReplyEventArgs",
    "T:LibreMetaverse.DirPeopleReplyEventArgs": "crate::directory_manager::DirPeopleReplyEventArgs",
    "T:LibreMetaverse.DirPlacesReplyEventArgs": "crate::directory_manager::DirPlacesReplyEventArgs",
    "T:LibreMetaverse.EventInfoReplyEventArgs": "crate::directory_manager::EventInfoReplyEventArgs",
    "T:LibreMetaverse.PlacesReplyEventArgs": "crate::directory_manager::PlacesReplyEventArgs",
    "T:LibreMetaverse.InterestListManager": "crate::interest_list::InterestListManager",
    "T:LibreMetaverse.Messages.Linden.InterestListMessage": "crate::interest_list::InterestListMessage",
    "T:LibreMetaverse.CallingCardOfferedEventArgs": "crate::friends_manager::CallingCardOfferedEventArgs",
    "T:LibreMetaverse.FriendFoundReplyEventArgs": "crate::friends_manager::FriendFoundReplyEventArgs",
    "T:LibreMetaverse.FriendInfo": "crate::friends_manager::FriendInfo",
    "T:LibreMetaverse.FriendInfoEventArgs": "crate::friends_manager::FriendInfoEventArgs",
    "T:LibreMetaverse.FriendNamesEventArgs": "crate::friends_manager::FriendNamesEventArgs",
    "T:LibreMetaverse.FriendsManager": "crate::friends_manager::FriendsManager",
    "T:LibreMetaverse.FriendsReadyEventArgs": "crate::friends_manager::FriendsReadyEventArgs",
    "T:LibreMetaverse.FriendshipOfferedEventArgs": "crate::friends_manager::FriendshipOfferedEventArgs",
    "T:LibreMetaverse.FriendshipResponseEventArgs": "crate::friends_manager::FriendshipResponseEventArgs",
    "T:LibreMetaverse.FriendshipTerminatedEventArgs": "crate::friends_manager::FriendshipTerminatedEventArgs",
    "T:LibreMetaverse.BannedAgentsEventArgs": "crate::group_manager::BannedAgentsEventArgs",
    "T:LibreMetaverse.CurrentGroupsEventArgs": "crate::group_manager::CurrentGroupsEventArgs",
    "T:LibreMetaverse.GroupAccountSummaryReplyEventArgs": "crate::group_manager::GroupAccountSummaryReplyEventArgs",
    "T:LibreMetaverse.GroupCreatedReplyEventArgs": "crate::group_manager::GroupCreatedReplyEventArgs",
    "T:LibreMetaverse.GroupDroppedEventArgs": "crate::group_manager::GroupDroppedEventArgs",
    "T:LibreMetaverse.GroupInvitationEventArgs": "crate::group_manager::GroupInvitationEventArgs",
    "T:LibreMetaverse.GroupManager": "crate::group_manager::GroupManager",
    "T:LibreMetaverse.GroupMembersReplyEventArgs": "crate::group_manager::GroupMembersReplyEventArgs",
    "T:LibreMetaverse.GroupNamesEventArgs": "crate::group_manager::GroupNamesEventArgs",
    "T:LibreMetaverse.GroupNoticesListReplyEventArgs": "crate::group_manager::GroupNoticesListReplyEventArgs",
    "T:LibreMetaverse.GroupOperationEventArgs": "crate::group_manager::GroupOperationEventArgs",
    "T:LibreMetaverse.GroupProfileEventArgs": "crate::group_manager::GroupProfileEventArgs",
    "T:LibreMetaverse.GroupRolesDataReplyEventArgs": "crate::group_manager::GroupRolesDataReplyEventArgs",
    "T:LibreMetaverse.GroupRolesMembersReplyEventArgs": "crate::group_manager::GroupRolesMembersReplyEventArgs",
    "T:LibreMetaverse.GroupTitlesReplyEventArgs": "crate::group_manager::GroupTitlesReplyEventArgs",
    "T:LibreMetaverse.TeleportEventArgs": "crate::agent_movement::TeleportEventArgs",
    "T:LibreMetaverse.TerrainCompressor": "crate::terrain_codec::TerrainCompressor",
    "T:LibreMetaverse.TerrainPatch": "crate::terrain_codec::TerrainPatch",
    "T:LibreMetaverse.TerrainPatch.GroupHeader": "crate::terrain_codec::TerrainPatchGroupHeader",
    "T:LibreMetaverse.TerrainPatch.Header": "crate::terrain_codec::TerrainPatchHeader",
    "T:LibreMetaverse.TerrainManager": "crate::terrain_manager::TerrainManager",
    "T:LibreMetaverse.LandPatchReceivedEventArgs": "crate::terrain_manager::LandPatchReceivedEventArgs",
    "T:LibreMetaverse.SoundManager": "crate::sound_manager::SoundManager",
    "T:LibreMetaverse.AttachedSoundEventArgs": "crate::sound_manager::AttachedSoundEventArgs",
    "T:LibreMetaverse.AttachedSoundGainChangeEventArgs": "crate::sound_manager::AttachedSoundGainChangeEventArgs",
    "T:LibreMetaverse.PreloadSoundEventArgs": "crate::sound_manager::PreloadSoundEventArgs",
    "T:LibreMetaverse.SoundTriggerEventArgs": "crate::sound_manager::SoundTriggerEventArgs",
    "T:LibreMetaverse.Parcel": "crate::parcel_manager::Parcel",
    "T:LibreMetaverse.ParcelInfo": "crate::parcel_manager::ParcelInfo",
    "T:LibreMetaverse.ParcelMedia": "crate::parcel_manager::ParcelMedia",
    "T:LibreMetaverse.ParcelManager": "crate::parcel_manager::ParcelManager",
    "T:LibreMetaverse.ParcelManager.ParcelAccessEntry": "crate::parcel_manager::ParcelManagerParcelAccessEntry",
    "T:LibreMetaverse.ParcelManager.ParcelPrimOwners": "crate::parcel_manager::ParcelManagerParcelPrimOwners",
    "T:LibreMetaverse.ForceSelectObjectsReplyEventArgs": "crate::parcel_manager::ForceSelectObjectsReplyEventArgs",
    "T:LibreMetaverse.ParcelAccessListReplyEventArgs": "crate::parcel_manager::ParcelAccessListReplyEventArgs",
    "T:LibreMetaverse.ParcelDwellReplyEventArgs": "crate::parcel_manager::ParcelDwellReplyEventArgs",
    "T:LibreMetaverse.ParcelInfoReplyEventArgs": "crate::parcel_manager::ParcelInfoReplyEventArgs",
    "T:LibreMetaverse.ParcelMediaCommandEventArgs": "crate::parcel_manager::ParcelMediaCommandEventArgs",
    "T:LibreMetaverse.ParcelMediaUpdateReplyEventArgs": "crate::parcel_manager::ParcelMediaUpdateReplyEventArgs",
    "T:LibreMetaverse.ParcelObjectOwnersReplyEventArgs": "crate::parcel_manager::ParcelObjectOwnersReplyEventArgs",
    "T:LibreMetaverse.ParcelOverlayEventArgs": "crate::parcel_manager::ParcelOverlayEventArgs",
    "T:LibreMetaverse.ParcelPropertiesEventArgs": "crate::parcel_manager::ParcelPropertiesEventArgs",
    "T:LibreMetaverse.SimParcelsDownloadedEventArgs": "crate::parcel_manager::SimParcelsDownloadedEventArgs",
    "T:LibreMetaverse.Messages.Linden.ObjectResourcesDetail": "crate::parcel_manager::ObjectResourcesDetail",
    "T:LibreMetaverse.Messages.Linden.ParcelResourcesDetail": "crate::parcel_manager::ParcelResourcesDetail",
    "T:LibreMetaverse.Messages.Linden.LandResourcesInfo": "crate::parcel_manager::LandResourcesInfo",
    "T:LibreMetaverse.ProductInfoEventArgs": "crate::agent_messages::ProductInfoEventArgs",
    "T:LibreMetaverse.RegionCrossedEventArgs": "crate::agent_movement::RegionCrossedEventArgs",
    "T:LibreMetaverse.RegionCrossingPredictionEventArgs": "crate::agent_movement::RegionCrossingPredictionEventArgs",
    "T:LibreMetaverse.ViewerBenefitsEventArgs": "crate::agent_messages::ViewerBenefitsEventArgs",
    "T:LibreMetaverse.Messages.Linden.ProductInfoRequestMessage": "crate::agent_manager::ProductInfoRequestMessage",
    "T:LibreMetaverse.Messages.Linden.ProductInfoRequestMessage.ProductInfo": "crate::agent_manager::ProductInfoRequestMessageProductInfo",
    "T:LibreMetaverse.Messages.Linden.ExperienceListMessage": "crate::agent_messages::ExperienceListMessage",
    "T:LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage": "crate::agent_messages::ExperiencePreferencesMessage",
    "T:LibreMetaverse.Messages.Linden.RegionExperiencesMessage": "crate::agent_messages::RegionExperiencesMessage",
    "T:LibreMetaverse.Messages.Linden.AgentPreferencesMessage": "crate::agent_messages::AgentPreferencesMessage",
    "T:LibreMetaverse.Messages.Linden.AvatarRenderInfoMessage": "crate::agent_messages::AvatarRenderInfoMessage",
    "T:LibreMetaverse.Messages.Linden.AvatarRenderInfoMessage.AvatarInfo": "crate::agent_messages::AvatarRenderInfoMessageAvatarInfo",
    "T:LibreMetaverse.Messages.Linden.ExperienceInfo": "crate::agent_messages::ExperienceInfo",
    "T:LibreMetaverse.Messages.Linden.ExperienceInfoMessage": "crate::agent_messages::ExperienceInfoMessage",
    "T:LibreMetaverse.Messages.Linden.ViewerBenefitsMessage": "crate::agent_messages::ViewerBenefitsMessage",
    "T:LibreMetaverse.Messages.Linden.ViewerBenefitsMessage.BenefitPackage": "crate::agent_messages::ViewerBenefitsMessageBenefitPackage",
    "T:LibreMetaverse.MoneyBalanceReplyEventArgs": "crate::agent_messages::MoneyBalanceReplyEventArgs",
    "T:LibreMetaverse.NavMeshStatusUpdateEventArgs": "crate::agent_messages::NavMeshStatusUpdateEventArgs",
    "T:LibreMetaverse.LoginCredential": "crate::login::LoginCredential",
    "T:LibreMetaverse.LoginException": "crate::login::LoginException",
    "T:LibreMetaverse.LoginParams": "crate::login::LoginParams",
    "T:LibreMetaverse.LoginProgressEventArgs": "crate::login::LoginProgressEventArgs",
    "T:LibreMetaverse.LoginResponseData": "crate::login::LoginResponseData",
    "T:LibreMetaverse.LoginResponseData.ParseMessage": "crate::login::LoginResponseDataParseMessage",
    "T:LibreMetaverse.LoginResponseData.ParseResult": "crate::login::LoginResponseDataParseResult",
    "T:LibreMetaverse.LoggedOutEventArgs": "crate::network_manager::LoggedOutEventArgs",
    "T:LibreMetaverse.MediaEntry": "crate::message_decoder::MediaEntry",
    "T:LibreMetaverse.Caps.EventQueueCallback": "crate::network_manager::CapsEventQueueCallback",
    "T:LibreMetaverse.CapsEventDictionary": "crate::network_manager::CapsEventDictionary",
    "T:LibreMetaverse.DisconnectedEventArgs": "crate::network_manager::DisconnectedEventArgs",
    "T:LibreMetaverse.EnvironmentManager": "crate::environment_manager::EnvironmentManager",
    "T:LibreMetaverse.LegacyEnvironmentEventArgs": "crate::environment_manager::LegacyEnvironmentEventArgs",
    "T:LibreMetaverse.ParcelEnvironmentEventArgs": "crate::environment_manager::ParcelEnvironmentEventArgs",
    "T:LibreMetaverse.RegionEnvironmentEventArgs": "crate::environment_manager::RegionEnvironmentEventArgs",
    "T:LibreMetaverse.Messages.Linden.EnvironmentData": "crate::environment_manager::EnvironmentData",
    "T:LibreMetaverse.Messages.Linden.ExtEnvironmentMessage": "crate::environment_manager::ExtEnvironmentMessage",
    "T:LibreMetaverse.Messages.Linden.LegacyEnvironmentMessage": "crate::environment_manager::LegacyEnvironmentMessage",
    "T:LibreMetaverse.EventQueueRunningEventArgs": "crate::network_manager::EventQueueRunningEventArgs",
    "T:LibreMetaverse.GenericStreamingMessageEventArgs": "crate::network_manager::GenericStreamingMessageEventArgs",
    "T:LibreMetaverse.NetworkManager.IncomingPacket": "crate::network_manager::NetworkManagerIncomingPacket",
    "T:LibreMetaverse.NetworkManager.OutgoingPacket": "crate::network_manager::NetworkManagerOutgoingPacket",
    "T:LibreMetaverse.NetworkManager.LoginResponseCallback": "crate::login::NetworkManagerLoginResponseCallback",
    "T:LibreMetaverse.PacketEventDictionary": "crate::network_manager::PacketEventDictionary",
    "T:LibreMetaverse.PacketReceivedEventArgs": "crate::network_manager::PacketReceivedEventArgs",
    "T:LibreMetaverse.PacketSentEventArgs": "crate::network_manager::PacketSentEventArgs",
    "T:LibreMetaverse.SimChangedEventArgs": "crate::network_manager::SimChangedEventArgs",
    "T:LibreMetaverse.SimConnectedEventArgs": "crate::network_manager::SimConnectedEventArgs",
    "T:LibreMetaverse.SimConnectingEventArgs": "crate::network_manager::SimConnectingEventArgs",
    "T:LibreMetaverse.SimDisconnectedEventArgs": "crate::network_manager::SimDisconnectedEventArgs",
    "T:LibreMetaverse.Simulator.SimStats": "crate::sim_stats::SimulatorSimStats",
    "T:LibreMetaverse.Messages.Linden.EventMessageBlock": "crate::event_queue::EventMessageBlock",
    "T:LibreMetaverse.Messages.Linden.EventQueueAck": "crate::event_queue::EventQueueAck",
    "T:LibreMetaverse.Messages.Linden.EventQueueEvent": "crate::event_queue::EventQueueEvent",
    "T:LibreMetaverse.Messages.Linden.EventQueueEvent.QueueEvent": "crate::event_queue::EventQueueEventQueueEvent",
    "T:LibreMetaverse.Messages.Linden.EventQueueGetMessage": "crate::event_queue::EventQueueGetMessage",
    "T:LibreMetaverse.Messages.Linden.AttachmentResourcesMessage": "crate::message_decoder::AttachmentResourcesMessage",
    "T:LibreMetaverse.Primitive.PhysicsProperties": "crate::message_decoder::PrimitivePhysicsProperties",
    "T:LibreMetaverse.Primitive": "crate::object_model::Primitive",
    "T:LibreMetaverse.Primitive.ConstructionData": "crate::object_model::PrimitiveConstructionData",
    "T:LibreMetaverse.Primitive.FlexibleData": "crate::object_model::PrimitiveFlexibleData",
    "T:LibreMetaverse.Primitive.LightData": "crate::object_model::PrimitiveLightData",
    "T:LibreMetaverse.Primitive.LightImage": "crate::object_model::PrimitiveLightImage",
    "T:LibreMetaverse.Primitive.ObjectProperties": "crate::object_model::PrimitiveObjectProperties",
    "T:LibreMetaverse.Primitive.ParticleSystem": "crate::object_model::PrimitiveParticleSystem",
    "T:LibreMetaverse.Primitive.SculptData": "crate::object_model::PrimitiveSculptData",
    "T:LibreMetaverse.Primitive.TextureAnimation": "crate::object_model::PrimitiveTextureAnimation",
    "T:LibreMetaverse.Primitive.TextureEntry": "crate::object_model::PrimitiveTextureEntry",
    "T:LibreMetaverse.Primitive.TextureEntryFace": "crate::object_model::PrimitiveTextureEntryFace",
    "T:LibreMetaverse.Materials.LegacyMaterial": "crate::object_model::LegacyMaterial",
    "T:LibreMetaverse.ObjectMediaEventArgs": "crate::object_material::ObjectMediaEventArgs",
    "T:LibreMetaverse.AvatarSitChangedEventArgs": "crate::object_manager::AvatarSitChangedEventArgs",
    "T:LibreMetaverse.AvatarUpdateEventArgs": "crate::object_manager::AvatarUpdateEventArgs",
    "T:LibreMetaverse.KillObjectEventArgs": "crate::object_manager::KillObjectEventArgs",
    "T:LibreMetaverse.KillObjectsEventArgs": "crate::object_manager::KillObjectsEventArgs",
    "T:LibreMetaverse.ObjectAnimationEventArgs": "crate::object_manager::ObjectAnimationEventArgs",
    "T:LibreMetaverse.ObjectDataBlockUpdateEventArgs": "crate::object_manager::ObjectDataBlockUpdateEventArgs",
    "T:LibreMetaverse.ObjectMovementUpdate": "crate::object_manager::ObjectMovementUpdate",
    "T:LibreMetaverse.ObjectPropertiesEventArgs": "crate::object_manager::ObjectPropertiesEventArgs",
    "T:LibreMetaverse.ObjectPropertiesFamilyEventArgs": "crate::object_manager::ObjectPropertiesFamilyEventArgs",
    "T:LibreMetaverse.ObjectPropertiesUpdatedEventArgs": "crate::object_manager::ObjectPropertiesUpdatedEventArgs",
    "T:LibreMetaverse.ParticleUpdateEventArgs": "crate::object_manager::ParticleUpdateEventArgs",
    "T:LibreMetaverse.PayPriceReplyEventArgs": "crate::object_manager::PayPriceReplyEventArgs",
    "T:LibreMetaverse.PhysicsPropertiesEventArgs": "crate::object_manager::PhysicsPropertiesEventArgs",
    "T:LibreMetaverse.PrimEventArgs": "crate::object_manager::PrimEventArgs",
    "T:LibreMetaverse.TerseObjectUpdateEventArgs": "crate::object_manager::TerseObjectUpdateEventArgs",
    "T:LibreMetaverse.ArchetypeParam": "crate::genepool_catalog::ArchetypeParam",
    "T:LibreMetaverse.AttentionData": "crate::attention_catalog::AttentionData",
    "T:LibreMetaverse.AttentionSet": "crate::attention_catalog::AttentionSet",
    "T:LibreMetaverse.BitPack": "crate::bit_pack::BitPack",
    "T:LibreMetaverse.DrivenParamInfo": "crate::visual_catalog::DrivenParamInfo",
    "T:LibreMetaverse.GrassDefinition": "crate::foliage_catalog::GrassDefinition",
    "T:LibreMetaverse.GrassDefinitions": "crate::foliage_catalog::GrassDefinitions",
    "T:LibreMetaverse.Genepool": "crate::genepool_catalog::Genepool",
    "T:LibreMetaverse.GenepoolArchetype": "crate::genepool_catalog::GenepoolArchetype",
    "T:LibreMetaverse.LindenAttentions": "crate::attention_catalog::LindenAttentions",
    "T:LibreMetaverse.Packets.PacketType": "crate::packet_catalog::PacketType",
    "T:LibreMetaverse.PrimMesher.Coord": "crate::prim_mesher::Coord",
    "T:LibreMetaverse.PrimMesher.Face": "crate::prim_mesher::Face",
    "T:LibreMetaverse.PrimMesher.Path": "crate::prim_mesher::Path",
    "T:LibreMetaverse.PrimMesher.PathNode": "crate::prim_mesher::PathNode",
    "T:LibreMetaverse.PrimMesher.PrimMesh": "crate::prim_mesher::PrimMesh",
    "T:LibreMetaverse.PrimMesher.Profile": "crate::prim_mesher::Profile",
    "T:LibreMetaverse.PrimMesher.Quat": "crate::prim_mesher::Quat",
    "T:LibreMetaverse.PrimMesher.UVCoord": "crate::prim_mesher::UVCoord",
    "T:LibreMetaverse.PrimMesher.ViewerFace": "crate::prim_mesher::ViewerFace",
    "T:LibreMetaverse.PrimMesher.ObjMesh": "crate::obj_mesh::ObjMesh",
    "T:LibreMetaverse.PrimMesher.SculptMap": "crate::sculpt::SculptMap",
    "T:LibreMetaverse.PrimMesher.SculptMesh": "crate::sculpt::SculptMesh",
    "T:LibreMetaverse.PrimMesher.VertexIndexer": "crate::vertex_indexer::VertexIndexer",
    "T:LibreMetaverse.PrimMesher.ViewerPolygon": "crate::vertex_indexer::ViewerPolygon",
    "T:LibreMetaverse.PrimMesher.ViewerVertex": "crate::vertex_indexer::ViewerVertex",
    "T:LibreMetaverse.Imaging.Skia.SkiaTextureCodec": "crate::skia_codec::SkiaTextureCodec",
    "T:LibreMetaverse.Imaging.ManagedImageCreator": "crate::j2k::ManagedImageCreator",
    "T:LibreMetaverse.Imaging.ManagedImageInterleavedExtensions": "crate::j2k::ManagedImageInterleavedExtensions",
    "T:LibreMetaverse.Imaging.Targa": "crate::targa::Targa",
    "T:LibreMetaverse.Imaging.ITextureCodec": "crate::managed_image::ITextureCodec",
    "T:LibreMetaverse.Imaging.ManagedImage": "crate::managed_image::ManagedImage",
    "T:LibreMetaverse.Imaging.ManagedImage.ImageChannels": "crate::managed_image::ManagedImageImageChannels",
    "T:LibreMetaverse.StructuredData.OSD": "crate::model::OSD",
    "T:LibreMetaverse.StructuredData.OSDArray": "crate::model::OSDArray",
    "T:LibreMetaverse.StructuredData.OSDBinary": "crate::model::OSDBinary",
    "T:LibreMetaverse.StructuredData.OSDBoolean": "crate::model::OSDBoolean",
    "T:LibreMetaverse.StructuredData.OSDDate": "crate::model::OSDDate",
    "T:LibreMetaverse.StructuredData.OSDException": "crate::model::OSDException",
    "T:LibreMetaverse.StructuredData.OSDFormat": "crate::model::OSDFormat",
    "T:LibreMetaverse.StructuredData.OSDInteger": "crate::model::OSDInteger",
    "T:LibreMetaverse.StructuredData.OSDLlsdXml": "crate::model::OSDLlsdXml",
    "T:LibreMetaverse.StructuredData.OSDMap": "crate::model::OSDMap",
    "T:LibreMetaverse.StructuredData.OSDReal": "crate::model::OSDReal",
    "T:LibreMetaverse.StructuredData.OSDString": "crate::model::OSDString",
    "T:LibreMetaverse.StructuredData.OSDType": "crate::model::OSDType",
    "T:LibreMetaverse.StructuredData.OSDUUID": "crate::model::OSDUUID",
    "T:LibreMetaverse.StructuredData.OSDUri": "crate::model::OSDUri",
    "T:LibreMetaverse.CacheDictionary`2": "crate::collections::CacheDictionary",
    "T:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator": "crate::collections::CacheDictionaryCacheDictionaryEnumerator",
    "T:LibreMetaverse.Color4": "crate::color4::Color4",
    "T:LibreMetaverse.CRC32": "crate::crc32::CRC32",
    "T:LibreMetaverse.DoubleDictionary`3": "crate::collections::DoubleDictionary",
    "T:LibreMetaverse.EmptyRemovalStrategy`1": "crate::collections::EmptyRemovalStrategy",
    "T:LibreMetaverse.EnumInfoAttribute": "crate::enum_compat::EnumInfoAttribute",
    "T:LibreMetaverse.EnumInfoExtensions": "crate::enum_compat::EnumInfoExtensions",
    "T:LibreMetaverse.ExpiringCache`2": "crate::collections::ExpiringCache",
    "T:LibreMetaverse.ICacheDictionaryRemovalStrategy`1": "crate::collections::ICacheDictionaryRemovalStrategy",
    "T:LibreMetaverse.LruRemovalStrategy`1": "crate::collections::LruRemovalStrategy",
    "T:LibreMetaverse.Matrix4": "crate::geometry::Matrix4",
    "T:LibreMetaverse.MruRemovalStrategy`1": "crate::collections::MruRemovalStrategy",
    "T:LibreMetaverse.MultiValueDictionary`2": "crate::collections::MultiValueDictionary",
    "T:LibreMetaverse.Quaternion": "crate::geometry::Quaternion",
    "T:LibreMetaverse.Ray": "crate::vectors::Ray",
    "T:LibreMetaverse.TokenBucket": "crate::collections::TokenBucket",
    "T:LibreMetaverse.UUID": "crate::uuid::UUID",
    "T:LibreMetaverse.Vector2": "crate::vectors::Vector2",
    "T:LibreMetaverse.Vector3": "crate::vectors::Vector3",
    "T:LibreMetaverse.Vector3d": "crate::vectors::Vector3d",
    "T:LibreMetaverse.Vector4": "crate::vectors::Vector4",
    "T:LibreMetaverse.Utils": "crate::utils::Utils",
    "T:LibreMetaverse.SkeletalBoneInfo": "crate::visual_catalog::SkeletalBoneInfo",
    "T:LibreMetaverse.TreeDefinition": "crate::foliage_catalog::TreeDefinition",
    "T:LibreMetaverse.TreeDefinitions": "crate::foliage_catalog::TreeDefinitions",
    "T:LibreMetaverse.AgentThrottle": "crate::udp_transport::AgentThrottle",
    "T:LibreMetaverse.IncomingPacketIDCollection": "crate::udp_transport::IncomingPacketIDCollection",
    "T:LibreMetaverse.UDPBase": "crate::udp_transport::UDPBase",
    "T:LibreMetaverse.UDPPacketBuffer": "crate::udp_transport::UDPPacketBuffer",
    "T:LibreMetaverse.VisualAlphaParam": "crate::visual_catalog::VisualAlphaParam",
    "T:LibreMetaverse.VisualColorParam": "crate::visual_catalog::VisualColorParam",
    "T:LibreMetaverse.VisualParam": "crate::visual_catalog::VisualParam",
    "T:LibreMetaverse.VisualParams": "crate::visual_catalog::VisualParams",
    "T:LibreMetaverse.VolumeMorphInfo": "crate::visual_catalog::VolumeMorphInfo",
    "T:LibreMetaverse.Rendering.CollisionVolume": "crate::skeleton::CollisionVolume",
    "T:LibreMetaverse.Rendering.Joint": "crate::skeleton::Joint",
    "T:LibreMetaverse.Rendering.JointBase": "crate::skeleton::JointBase",
    "T:LibreMetaverse.Rendering.LindenSkeleton": "crate::skeleton::LindenSkeleton",
}

# The cs0 parser/token classes are generated from the reviewed Rust grammar
# input. Keep this list algorithmic so adding an alternative cannot leave a
# hand-maintained compatibility shell behind.
_LSL_GENERATED_TYPES = [
    "ANY", "BASE", "COLON", "ID", "LBRACE", "LBRACK", "LPAREN", "NEW",
    "RBRACE", "RBRACK", "RPAREN", "SEMICOLON", "THIS",
]
for _lhs, _alternatives in (
    ("ClassBody", 1), ("GStuff", 3), ("Stuff", 2), ("Cons", 1),
    ("Call", 1), ("BaseCall", 3), ("Name", 2), ("Item", 12),
):
    _LSL_GENERATED_TYPES.append(_lhs)
    for _alternative in range(1, _alternatives + 1):
        _LSL_GENERATED_TYPES.extend((
            f"{_lhs}_{_alternative * 2 - 1}",
            f"{_lhs}_{_alternative * 2}",
            f"{_lhs}_{_alternative * 2}_1",
        ))
_LSL_GENERATED_TYPES.extend(("cs0syntax", "cs0tokens", "yycs0syntax", "yycs0tokens"))
NATIVE_TYPES.update({
    f"T:LibreMetaverse.LslTools.{name}": f"crate::generated_tables::{name}"
    for name in _LSL_GENERATED_TYPES
})
for _name in (
    "AddToFunc", "Builder", "Func", "GenBase", "LNode", "Nfa", "NfaNode",
    "Path", "Regex", "Relation", "SCreator", "Serialiser", "Sfactory",
    "SymbolType", "SymbolsGen", "TCreator", "Tfactory", "TokClassDef", "TokensGen",
):
    NATIVE_TYPES[f"T:LibreMetaverse.LslTools.{_name}"] = f"crate::generator::{_name}"
NATIVE_TYPES["T:LibreMetaverse.LslTools.ObjectList.OListEnumerator"] = (
    "crate::generator::ObjectListOListEnumerator"
)

# Native declarations whose cataloged method implementations are still emitted
# below. This is used for static namespace types such as OSDParser: the type is
# hand-written, while its fixed public methods remain generator-audited.
NATIVE_DECLARATIONS = {
    "T:LibreMetaverse.RLV.CameraRestrictions": "crate::state::CameraRestrictions",
    "T:LibreMetaverse.RLV.CameraSettings": "crate::state::CameraSettings",
    "T:LibreMetaverse.RLV.EventArguments.RestrictionUpdatedEventArgs": "crate::state::RestrictionUpdatedEventArgs",
    "T:LibreMetaverse.RLV.InventoryMap": "crate::state::InventoryMap",
    "T:LibreMetaverse.RLV.LockedFolderPublic": "crate::state::LockedFolderPublic",
    "T:LibreMetaverse.RLV.RlvBlacklist": "crate::state::RlvBlacklist",
    "T:LibreMetaverse.RLV.RlvCommon": "crate::protocol::RlvCommon",
    "T:LibreMetaverse.RLV.RlvInventoryItem": "crate::state::RlvInventoryItem",
    "T:LibreMetaverse.RLV.RlvPermissionsService": "crate::state::RlvPermissionsService",
    "T:LibreMetaverse.RLV.RlvRestriction": "crate::protocol::RlvRestriction",
    "T:LibreMetaverse.RLV.RlvRestrictionManager": "crate::state::RlvRestrictionManager",
    "T:LibreMetaverse.RLV.RlvSharedFolder": "crate::state::RlvSharedFolder",
    "T:LibreMetaverse.AgentManager": "crate::agent_manager::AgentManager",
    "T:LibreMetaverse.Animation": "crate::avatar_manager::Animation",
    "T:LibreMetaverse.Animesh.AnimationTrack": "crate::animesh_runtime::AnimationTrack",
    "T:LibreMetaverse.Animesh.AnimeshManager": "crate::animesh_runtime::AnimeshManager",
    "T:LibreMetaverse.Animesh.AnimeshPlayer": "crate::animesh_runtime::AnimeshPlayer",
    "T:LibreMetaverse.Animesh.JointPose": "crate::animesh_runtime::JointPose",
    "T:LibreMetaverse.AnimeshSkinning": "crate::animesh_skinning::AnimeshSkinning",
    "T:LibreMetaverse.AppearanceManager": "crate::appearance_manager::AppearanceManager",
    "T:LibreMetaverse.AvatarManager": "crate::avatar_manager::AvatarManager",
    "T:LibreMetaverse.AvatarAnimationEventArgs": "crate::avatar_manager::AvatarAnimationEventArgs",
    "T:LibreMetaverse.AppearanceSetEventArgs": "crate::appearance_manager::AppearanceSetEventArgs",
    "T:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy": "crate::current_outfit::CompositeCurrentOutfitPolicy",
    "T:LibreMetaverse.Appearance.CurrentOutfitFolder": "crate::current_outfit::CurrentOutfitFolder",
    "T:LibreMetaverse.Appearance.InitialOutfit": "crate::initial_outfit::InitialOutfit",
    "T:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress": "crate::initial_outfit::InitialOutfitProgress",
    "T:LibreMetaverse.Appearance.InitialOutfitHandler": "crate::initial_outfit::InitialOutfitHandler",
    "T:LibreMetaverse.GridClientBakingTextureProvider": "crate::baking_texture_provider::GridClientBakingTextureProvider",
    "T:LibreMetaverse.Imaging.Baker": "crate::appearance_baker::Baker",
    "T:LibreMetaverse.GridClient": "crate::client_core::GridClient",
    "T:LibreMetaverse.BinBVHAnimationReader": "crate::animation::BinBVHAnimationReader",
    "T:LibreMetaverse.binBVHJoint": "crate::animation::BinBVHJoint",
    "T:LibreMetaverse.binBVHJointKey": "crate::animation::BinBVHJointKey",
    "T:LibreMetaverse.InventoryManager": "crate::inventory_manager::InventoryManager",
    "T:LibreMetaverse.InventoryAISClient": "crate::inventory_ais::InventoryAISClient",
    "T:LibreMetaverse.NetworkManager": "crate::network_manager::NetworkManager",
    "T:LibreMetaverse.ObjectManager": "crate::object_material::ObjectManager",
    "T:LibreMetaverse.Rendering.MeshSkinData": "crate::animesh_skinning::MeshSkinData",
    "T:LibreMetaverse.Rendering.AttachmentRiggedSkin": "crate::avatar_rig::AttachmentRiggedSkin",
    "T:LibreMetaverse.Rendering.AvatarAttachmentPoint": "crate::avatar_rig::AvatarAttachmentPoint",
    "T:LibreMetaverse.Rendering.AvatarBoneMath": "crate::avatar_rig::AvatarBoneMath",
    "T:LibreMetaverse.Rendering.AvatarMeshDefinition": "crate::avatar_rig::AvatarMeshDefinition",
    "T:LibreMetaverse.Rendering.LindenAvatarDefinition": "crate::avatar_rig::LindenAvatarDefinition",
    "T:LibreMetaverse.Rendering.RiggedSkinMath": "crate::avatar_rig::RiggedSkinMath",
    "T:LibreMetaverse.RebakeAvatarTexturesEventArgs": "crate::appearance_manager::RebakeAvatarTexturesEventArgs",
    "T:LibreMetaverse.Settings": "crate::client_core::Settings",
    "T:LibreMetaverse.Simulator": "crate::network_manager::Simulator",
    "T:LibreMetaverse.StructuredData.OSDParser": "crate::model::OSDParser",
    "T:LibreMetaverse.Rendering.SimpleRenderer": "crate::simple_renderer::SimpleRenderer",
    "T:LibreMetaverse.Rendering.MeshFoundry": "crate::mesh_foundry::MeshFoundry",
}

# Catalog declarations which are themselves complete native Rust. Unlike
# NATIVE_TYPES, these types intentionally remain in generated.rs: the RLV
# enums are closed value tables and the callback interfaces are Rust traits
# whose required methods are implemented by the host and default adapters.
# Keeping this set explicit lets coverage distinguish concrete generated code
# from a callable failure-only compatibility shell.
NATIVE_GENERATED_TYPES = {
    "T:LibreMetaverse.RLV.IRlvActionCallbacks",
    "T:LibreMetaverse.RLV.IRlvQueryCallbacks",
    "T:LibreMetaverse.RLV.RlvAttachmentPoint",
    "T:LibreMetaverse.RLV.RlvGestureState",
    "T:LibreMetaverse.RLV.RlvGetDebugType",
    "T:LibreMetaverse.RLV.RlvGetEnvType",
    "T:LibreMetaverse.RLV.RlvPermissionsService.HoverTextLocation",
    "T:LibreMetaverse.RLV.RlvPermissionsService.ObjectLocation",
    "T:LibreMetaverse.RLV.RlvPermissionsService.TouchLocation",
    "T:LibreMetaverse.RLV.RlvRestrictionType",
    "T:LibreMetaverse.RLV.RlvWearableType",
}

NATIVE_MEMBER_BODIES = {
    "F:LibreMetaverse.Animations.DANCE1":
        "crate::animation::dance1()",
    "M:LibreMetaverse.Animations.ToDictionary":
        "Ok(libremetaverse_types::compat::FrozenDictionary(crate::animation::builtin_animations()))",
    "M:LibreMetaverse.RLV.RlvCommon.TryGetAttachmentPointFromItemName(System.String,System.Nullable{LibreMetaverse.RLV.RlvAttachmentPoint}@)":
        "Self::native_try_get_attachment_point_from_item_name(item_name, attachment_point)",
    "M:LibreMetaverse.RLV.RlvRestriction.#ctor(LibreMetaverse.RLV.RlvRestrictionType,System.Guid,System.String,System.Collections.Generic.ICollection{System.Object})":
        "Self::native_new(behavior, sender, sender_name, args)",
    "M:LibreMetaverse.RLV.RlvRestriction.Equals(System.Object)":
        "self.native_equals(obj)",
    "M:LibreMetaverse.RLV.RlvRestriction.GetHashCode":
        "self.native_get_hash_code()",
    "M:LibreMetaverse.RLV.RlvRestriction.ToString":
        "self.native_to_string()",
    "P:LibreMetaverse.RLV.RlvRestriction.Args":
        "self.native_args()",
    "P:LibreMetaverse.RLV.RlvRestriction.Behavior":
        "self.native_behavior()",
    "P:LibreMetaverse.RLV.RlvRestriction.IsException":
        "self.native_is_exception()",
    "P:LibreMetaverse.RLV.RlvRestriction.OriginalBehavior":
        "self.native_original_behavior()",
    "P:LibreMetaverse.RLV.RlvRestriction.Sender":
        "self.native_sender()",
    "P:LibreMetaverse.RLV.RlvRestriction.SenderName":
        "self.native_sender_name()",
    "M:LibreMetaverse.Rendering.MeshFoundry.#ctor": "Self::native_new()",
    "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_faceted_mesh(prim, lod)",
    "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[])":
        "self.native_generate_faceted_mesh_mesh(prim, mesh_data, libremetaverse::rendering::DetailLevel::Highest)",
    "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[],LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_faceted_mesh_mesh(prim, mesh_data, lod)",
    "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_faceted_sculpt_mesh(prim, sculpt_texture, lod)",
    "M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_simple_mesh(prim, lod, false)",
    "M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMeshWithNormals(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_simple_mesh(prim, lod, true)",
    "M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_simple_sculpt_mesh(prim, sculpt_texture, lod)",
    "M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[])":
        "self.native_mesh_sub_mesh_as_convex_hulls(prim, compressed_mesh_data, None)",
    "M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[],System.Collections.Generic.List{LibreMetaverse.Vector3}@)":
        "self.native_mesh_sub_mesh_as_convex_hulls(prim, compressed_mesh_data, Some(bounding_hull))",
    "M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsSimpleMesh(LibreMetaverse.Primitive,System.Byte[])":
        "self.native_mesh_sub_mesh_as_simple_mesh(prim, compressed_mesh_data)",
    "M:LibreMetaverse.Rendering.MeshFoundry.TerrainMesh(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single)":
        "self.native_terrain_mesh(z_map, x_begin, x_end, y_begin, y_end)",
    "M:LibreMetaverse.Rendering.MeshFoundry.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)":
        "self.native_transform_tex_coords(vertices, center, te_face, prim_scale)",
    "M:LibreMetaverse.Rendering.MeshFoundry.UnpackMesh(System.Byte[])":
        "self.native_unpack_mesh(asset_data).map(Some)",
    "M:LibreMetaverse.Rendering.SimpleRenderer.#ctor": "Self::native_new()",
    "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_faceted_mesh(prim, lod)",
    "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_faceted_sculpt_mesh(prim, sculpt_texture, lod)",
    "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_simple_mesh(prim, lod)",
    "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)":
        "self.native_generate_simple_sculpt_mesh(prim, sculpt_texture, lod)",
    "M:LibreMetaverse.Rendering.SimpleRenderer.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)":
        "self.native_transform_tex_coords(vertices, center, te_face, prim_scale)",
    "F:LibreMetaverse.Assets.ArchiveConstants.ASSET_TYPE_TO_EXTENSION":
        "crate::asset_archive::asset_type_to_extension()",
    "F:LibreMetaverse.Assets.ArchiveConstants.EXTENSION_TO_ASSET_TYPE":
        "crate::asset_archive::extension_to_asset_type()",
    "M:LibreMetaverse.Assets.ArchiveConstants.#ctor":
        "/* native zero-sized constants namespace */ Ok(Self)",
    "M:LibreMetaverse.Assets.OarFile.ClearAssetFolder(System.String)":
        "crate::asset_archive::clear_asset_folder(assets_path)",
    "M:LibreMetaverse.Assets.OarFile.PackageArchive(System.String,System.String)":
        "crate::asset_archive::package_archive(directory_name, filename)",
    "M:LibreMetaverse.Assets.OarFile.SaveAssetsAsync(LibreMetaverse.AssetManager,LibreMetaverse.AssetType,System.Collections.Generic.IList{LibreMetaverse.UUID},System.String)":
        "crate::asset_archive::save_assets(asset_manager, asset_type, assets, assets_path).await",
    "M:LibreMetaverse.Assets.OarFile.SaveRegionSettings(LibreMetaverse.Simulator,System.String)":
        "crate::asset_archive::save_region_settings(sim, settings_path)",
    "M:LibreMetaverse.Assets.OarFile.SaveSimAssetsAsync(LibreMetaverse.AssetManager,LibreMetaverse.AssetType,LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.UUID,System.String)":
        "crate::asset_archive::save_sim_asset(asset_manager, asset_type, asset_id, item_id, prim_id, assets_path).await",
    "M:LibreMetaverse.Assets.OarFile.SaveTerrain(LibreMetaverse.Simulator,System.String)":
        "crate::asset_archive::save_terrain(sim, terrain_path)",
    "M:LibreMetaverse.Assets.OarFile.UnpackageArchive(System.String,LibreMetaverse.Assets.OarFile.AssetLoadedCallback,LibreMetaverse.Assets.OarFile.TerrainLoadedCallback,LibreMetaverse.Assets.OarFile.SceneObjectLoadedCallback,LibreMetaverse.Assets.OarFile.SettingsLoadedCallback)":
        "crate::asset_archive::unpackage_archive(filename, asset_callback, terrain_callback, object_callback, settings_callback)",
    "M:LibreMetaverse.InventoryManager.UploadThumbnailAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Byte[],System.Threading.CancellationToken,System.IProgress{LibreMetaverse.HttpCapsClient.ProgressReport})":
        "self.native_upload_thumbnail(inventory_id, task_id, j2c_image_data, cancellation_token, progress).await",
    "P:LibreMetaverse.GridClient.Estate": "self.native_estate().unwrap_or_else(|_| panic!(\"failed to construct EstateTools\"))",
    "P:LibreMetaverse.GridClient.Estate#set": "self.native_set_estate(value)",
    "P:LibreMetaverse.GridClient.Marketplace": "self.native_marketplace()",
    "P:LibreMetaverse.GridClient.Marketplace#set": "self.native_set_marketplace(value)",
    "P:LibreMetaverse.GridClient.Environment":
        "self.native_environment().unwrap_or_else(|_| panic!(\"failed to construct EnvironmentManager\"))",
    "P:LibreMetaverse.GridClient.Environment#set": "self.native_set_environment(value)",
    "P:LibreMetaverse.GridClient.Terrain": "self.native_terrain().unwrap_or_else(|_| panic!(\"failed to construct TerrainManager\"))",
    "P:LibreMetaverse.GridClient.Terrain#set": "self.native_set_terrain(value)",
    "P:LibreMetaverse.GridClient.Sound": "self.native_sound().unwrap_or_else(|_| panic!(\"failed to construct SoundManager\"))",
    "P:LibreMetaverse.GridClient.Sound#set": "self.native_set_sound(value)",
    "P:LibreMetaverse.GridClient.Parcels": "self.native_parcels().unwrap_or_else(|_| panic!(\"failed to construct ParcelManager\"))",
    "P:LibreMetaverse.GridClient.Parcels#set": "self.native_set_parcels(value)",
    "P:LibreMetaverse.GridClient.Grid": "self.native_grid().unwrap_or_else(|_| panic!(\"failed to construct GridManager\"))",
    "P:LibreMetaverse.GridClient.Grid#set": "self.native_set_grid(value)",
    "P:LibreMetaverse.GridClient.Directory": "self.native_directory().unwrap_or_else(|_| panic!(\"failed to construct DirectoryManager\"))",
    "P:LibreMetaverse.GridClient.Directory#set": "self.native_set_directory(value)",
    "P:LibreMetaverse.GridClient.InterestList": "self.native_interest_list().unwrap_or_else(|_| panic!(\"failed to construct InterestListManager\"))",
    "P:LibreMetaverse.GridClient.InterestList#set": "self.native_set_interest_list(value)",
    "P:LibreMetaverse.GridClient.Friends": "self.native_friends().unwrap_or_else(|_| panic!(\"failed to construct FriendsManager\"))",
    "P:LibreMetaverse.GridClient.Friends#set": "self.native_set_friends(value)",
    "P:LibreMetaverse.GridClient.Groups": "self.native_groups()",
    "P:LibreMetaverse.GridClient.Groups#set": "self.native_set_groups(value)",
    "M:LibreMetaverse.Group.Equals(LibreMetaverse.Group)": "self.native_equals_group(&other)",
    "M:LibreMetaverse.Group.Equals(System.Object)": "self.native_equals_object(obj)",
    "M:LibreMetaverse.Group.GetHashCode": "self.native_hash_code()",
    "M:LibreMetaverse.Group.ToString": "self.native_to_string()",
    "M:LibreMetaverse.GroupNotice.SerializeAttachment": "self.native_serialize_attachment()",
    "M:LibreMetaverse.GroupRole.ToString": "self.native_to_string()",
    "M:LibreMetaverse.GroupTitle.ToString": "self.native_to_string()",
    "M:LibreMetaverse.Simulator.IsParcelMapFull": "Ok(self.native_is_parcel_map_full())",
    "M:LibreMetaverse.Simulator.TerrainHeightAtPoint(System.Int32,System.Int32,System.Single@)": "self.native_terrain_height_at_point(x, y, height)",
    "P:LibreMetaverse.Simulator.ParcelMap": "self.native_parcel_map_snapshot()",
    "P:LibreMetaverse.Simulator.Parcels": "std::sync::RwLock::new(self.native_parcels_snapshot())",
    "E:LibreMetaverse.ObjectManager.AvatarSitChanged":
        "self.native_subscribe_avatar_sit_changed(handler)",
    "E:LibreMetaverse.ObjectManager.AvatarUpdate":
        "self.native_subscribe_avatar_update(handler)",
    "E:LibreMetaverse.ObjectManager.KillObject":
        "self.native_subscribe_kill_object(handler)",
    "E:LibreMetaverse.ObjectManager.KillObjects":
        "self.native_subscribe_kill_objects(handler)",
    "E:LibreMetaverse.ObjectManager.ObjectAnimation":
        "self.native_subscribe_object_animation(handler)",
    "E:LibreMetaverse.ObjectManager.ObjectDataBlockUpdate":
        "self.native_subscribe_object_data_block_update(handler)",
    "E:LibreMetaverse.ObjectManager.ObjectProperties":
        "self.native_subscribe_object_properties(handler)",
    "E:LibreMetaverse.ObjectManager.ObjectPropertiesFamily":
        "self.native_subscribe_object_properties_family(handler)",
    "E:LibreMetaverse.ObjectManager.ObjectPropertiesUpdated":
        "self.native_subscribe_object_properties_updated(handler)",
    "E:LibreMetaverse.ObjectManager.ObjectUpdate":
        "self.native_subscribe_object_update(handler)",
    "E:LibreMetaverse.ObjectManager.ParticleUpdate":
        "self.native_subscribe_particle_update(handler)",
    "E:LibreMetaverse.ObjectManager.PayPriceReply":
        "self.native_subscribe_pay_price_reply(handler)",
    "E:LibreMetaverse.ObjectManager.PhysicsProperties":
        "self.native_subscribe_physics_properties(handler)",
    "E:LibreMetaverse.ObjectManager.TerseObjectUpdate":
        "self.native_subscribe_terse_object_update(handler)",
    "M:LibreMetaverse.Helpers.TEGlowByte(System.Single)":
        "Ok(crate::object_model::te_glow_byte(glow))",
    "M:LibreMetaverse.Helpers.TEGlowFloat(System.Byte[],System.Int32)":
        "crate::object_model::te_glow_float(bytes, pos)",
    "M:LibreMetaverse.Helpers.TEOffsetFloat(System.Byte[],System.Int32)":
        "crate::object_model::te_offset_float(bytes, pos)",
    "M:LibreMetaverse.Helpers.TEOffsetShort(System.Single)":
        "Ok(crate::object_model::te_offset_short(offset))",
    "M:LibreMetaverse.Helpers.TERotationFloat(System.Byte[],System.Int32)":
        "crate::object_model::te_rotation_float(bytes, pos)",
    "M:LibreMetaverse.Helpers.TERotationShort(System.Single)":
        "Ok(crate::object_model::te_rotation_short(rotation))",
    "M:LibreMetaverse.AvatarAnimationEventArgs.#ctor(LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.Animation})":
        "crate::avatar_manager::AvatarAnimationEventArgs::native_new(avatar_id, anims)",
    "P:LibreMetaverse.AvatarAnimationEventArgs.Animations":
        "self.native_animations()",
    "P:LibreMetaverse.AvatarAnimationEventArgs.AvatarID":
        "self.native_avatar_id()",
    "E:LibreMetaverse.AvatarManager.AvatarAnimation": "self.native_subscribe_avatar_animation(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarAppearance": "self.native_subscribe_avatar_appearance(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarClassifiedReply": "self.native_subscribe_avatar_classified_reply(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarGroupsReply": "self.native_subscribe_avatar_groups_reply(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarInterestsReply": "self.native_subscribe_avatar_interests_reply(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarNotesReply": "self.native_subscribe_avatar_notes_reply(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarPickerReply": "self.native_subscribe_avatar_picker_reply(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarPicksReply": "self.native_subscribe_avatar_picks_reply(handler)",
    "E:LibreMetaverse.AvatarManager.AvatarPropertiesReply": "self.native_subscribe_avatar_properties_reply(handler)",
    "E:LibreMetaverse.AvatarManager.ClassifiedInfoReply": "self.native_subscribe_classified_info_reply(handler)",
    "E:LibreMetaverse.AvatarManager.DisplayNameUpdate": "self.native_subscribe_display_name_update(handler)",
    "E:LibreMetaverse.AvatarManager.PickInfoReply": "self.native_subscribe_pick_info_reply(handler)",
    "E:LibreMetaverse.AvatarManager.UUIDNameReply": "self.native_subscribe_uuid_name_reply(handler)",
    "E:LibreMetaverse.AvatarManager.ViewerEffect": "self.native_subscribe_viewer_effect(handler)",
    "E:LibreMetaverse.AvatarManager.ViewerEffectLookAt": "self.native_subscribe_viewer_effect_look_at(handler)",
    "E:LibreMetaverse.AvatarManager.ViewerEffectPointAt": "self.native_subscribe_viewer_effect_point_at(handler)",
    "M:LibreMetaverse.Animesh.AnimationTrack.Advance(System.Single)":
        "self.native_advance(dt)",
    "M:LibreMetaverse.Animesh.AnimationTrack.EvaluatePose(System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Animesh.JointPose})":
        "self.native_evaluate_pose(pose)",
    "P:LibreMetaverse.Animesh.AnimationTrack.AnimationID":
        "self.native_animation_id()",
    "P:LibreMetaverse.Animesh.AnimationTrack.CurrentTime":
        "self.native_current_time()",
    "P:LibreMetaverse.Animesh.AnimationTrack.CurrentTime#set":
        "self.native_set_current_time(value)",
    "P:LibreMetaverse.Animesh.AnimationTrack.Data":
        "self.native_data()",
    "P:LibreMetaverse.Animesh.AnimationTrack.Data#set":
        "self.native_set_data(value)",
    "P:LibreMetaverse.Animesh.AnimationTrack.EaseWeight":
        "self.native_ease_weight()",
    "P:LibreMetaverse.Animesh.AnimationTrack.IsFinished":
        "self.native_is_finished()",
    "P:LibreMetaverse.Animesh.AnimationTrack.IsFinished#set":
        "self.native_set_is_finished(value)",
    "M:LibreMetaverse.Animesh.AnimeshManager.GetPlayer(LibreMetaverse.UUID)":
        "Ok(self.native_get_player(object_id))",
    "M:LibreMetaverse.Animesh.AnimeshManager.RemovePlayer(LibreMetaverse.UUID)":
        "self.native_remove_player(object_id); Ok(())",
    "M:LibreMetaverse.Animesh.AnimeshManager.Update(System.Single)":
        "self.native_update(dt)",
    "P:LibreMetaverse.Animesh.AnimeshManager.AllPlayers":
        "Box::new(self.native_all_players().into_iter())",
    "M:LibreMetaverse.Animesh.AnimeshPlayer.EvaluatePose":
        "self.native_evaluate_pose()",
    "M:LibreMetaverse.Animesh.AnimeshPlayer.Update(System.Single)":
        "self.native_update(dt)",
    "P:LibreMetaverse.Animesh.AnimeshPlayer.ObjectID":
        "self.native_object_id()",
    "P:LibreMetaverse.Animesh.AnimeshPlayer.TrackCount":
        "self.native_track_count()",
    "M:LibreMetaverse.AnimeshSkinning.ComputeSkinningMatrices(System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Animesh.JointPose},LibreMetaverse.Rendering.LindenSkeleton,LibreMetaverse.Rendering.MeshSkinData)":
        "crate::animesh_skinning::AnimeshSkinning::native_compute_skinning_matrices(pose, skeleton, skin_data)",
    "M:LibreMetaverse.AnimeshSkinning.DeformVertices(LibreMetaverse.Rendering.Face,LibreMetaverse.Matrix4[],LibreMetaverse.Matrix4,System.Span{LibreMetaverse.Vector3},System.Span{LibreMetaverse.Vector3})":
        "crate::animesh_skinning::AnimeshSkinning::native_deform_vertices(face, skinning_matrices, bind_shape_matrix, out_positions, out_normals)",
    "M:LibreMetaverse.BinBVHAnimationReader.#ctor(System.Byte[])":
        "crate::animation::BinBVHAnimationReader::native_new(animationdata)",
    "M:LibreMetaverse.BinBVHAnimationReader.Equals(LibreMetaverse.BinBVHAnimationReader)":
        "self.native_equals(other.as_ref())",
    "M:LibreMetaverse.BinBVHAnimationReader.Equals(LibreMetaverse.binBVHJoint[],LibreMetaverse.binBVHJoint[])":
        "crate::animation::joints_equal(&arr1, &arr2)",
    "M:LibreMetaverse.BinBVHAnimationReader.Equals(System.Object)":
        "obj.as_ref().and_then(|value| value.downcast_ref::<crate::animation::BinBVHAnimationReader>()).is_some_and(|other| self.native_equals(Some(other)))",
    "M:LibreMetaverse.BinBVHAnimationReader.GetHashCode":
        "self.native_get_hash_code()",
    "M:LibreMetaverse.BinBVHAnimationReader.ReadBytesUntilNull(System.Byte[],System.Int32@)":
        "self.native_read_bytes_until_null(data, i)",
    "M:LibreMetaverse.BinBVHAnimationReader.readJoint(System.Byte[],System.Int32@)":
        "self.native_read_joint(data, i)",
    "M:LibreMetaverse.BinBVHAnimationReader.readKeys(System.Byte[],System.Int32@,System.Int32,System.Single,System.Single)":
        "self.native_read_keys(data, i, keycount, min, max)",
    "M:LibreMetaverse.binBVHJoint.Equals(LibreMetaverse.binBVHJoint)":
        "self.native_equals(&other)",
    "M:LibreMetaverse.binBVHJoint.Equals(LibreMetaverse.binBVHJointKey,LibreMetaverse.binBVHJointKey)":
        "crate::animation::key_equal(&arr1, &arr2)",
    "M:LibreMetaverse.binBVHJoint.Equals(LibreMetaverse.binBVHJointKey[],LibreMetaverse.binBVHJointKey[])":
        "crate::animation::keys_equal(&arr1, &arr2)",
    "M:LibreMetaverse.binBVHJoint.Equals(System.Object)":
        "obj.as_ref().and_then(|value| value.downcast_ref::<crate::animation::BinBVHJoint>()).is_some_and(|other| self.native_equals(other))",
    "M:LibreMetaverse.binBVHJoint.GetHashCode":
        "self.native_get_hash_code()",
    "M:LibreMetaverse.binBVHJoint.op_Equality(LibreMetaverse.binBVHJoint,LibreMetaverse.binBVHJoint)":
        "left.native_equals(&right)",
    "M:LibreMetaverse.binBVHJoint.op_Inequality(LibreMetaverse.binBVHJoint,LibreMetaverse.binBVHJoint)":
        "!left.native_equals(&right)",
    "M:LibreMetaverse.Rendering.MeshSkinData.#ctor":
        "crate::animesh_skinning::MeshSkinData::native_new()",
    "M:LibreMetaverse.Rendering.AttachmentRiggedSkin.#ctor":
        "crate::avatar_rig::AttachmentRiggedSkin::native_new()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.Group":
        "self.native_group()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.Id":
        "self.native_id()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.Joint":
        "self.native_joint()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.Location":
        "self.native_location()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.Name":
        "self.native_name()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.Position":
        "self.native_position()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.Rotation":
        "self.native_rotation()",
    "P:LibreMetaverse.Rendering.AvatarAttachmentPoint.VisibleInFirstPerson":
        "self.native_visible_in_first_person()",
    "M:LibreMetaverse.Rendering.AvatarBoneMath.BuildBoneWorldMatrices(LibreMetaverse.Rendering.LindenSkeleton,System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Rendering.BoneTransform})":
        "crate::avatar_rig::AvatarBoneMath::native_build_bone_world_matrices(skeleton, bone_transforms)",
    "M:LibreMetaverse.Rendering.AvatarBoneMath.ComputeAnimatedBoneWorldMatrices(LibreMetaverse.Rendering.LindenAvatarDefinition,System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Rendering.BoneTransform},System.Collections.Generic.IReadOnlyDictionary{System.String,System.Numerics.Quaternion})":
        "crate::avatar_rig::AvatarBoneMath::native_compute_animated_bone_world_matrices(&avatar_def, &bone_transforms, &rot_deltas)",
    "M:LibreMetaverse.Rendering.AvatarBoneMath.ComputeAnimatedBoneWorldMatrices(LibreMetaverse.Rendering.LindenAvatarDefinition,System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Rendering.BoneTransform},System.Collections.Generic.IReadOnlyDictionary{System.String,System.Numerics.Quaternion},System.Collections.Generic.Dictionary{System.String,System.Numerics.Matrix4x4})":
        "let computed = crate::avatar_rig::AvatarBoneMath::native_compute_animated_bone_world_matrices(&avatar_def, &bone_transforms, &rot_deltas)?; let mut result = result; result.clear(); result.extend(computed); Ok(())",
    "M:LibreMetaverse.Rendering.AvatarBoneMath.ComputeAttachmentBoneWorldMatrices(LibreMetaverse.Rendering.LindenAvatarDefinition,System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Rendering.BoneTransform},System.Collections.Generic.IReadOnlyDictionary{System.String,System.Numerics.Quaternion})":
        "crate::avatar_rig::AvatarBoneMath::native_compute_attachment_bone_world_matrices(&avatar_def, &bone_transforms, &rot_deltas)",
    "M:LibreMetaverse.Rendering.AvatarBoneMath.ComputeAttachmentBoneWorldMatrices(LibreMetaverse.Rendering.LindenAvatarDefinition,System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Rendering.BoneTransform},System.Collections.Generic.IReadOnlyDictionary{System.String,System.Numerics.Quaternion},System.Collections.Generic.Dictionary{System.String,System.Numerics.Matrix4x4})":
        "let computed = crate::avatar_rig::AvatarBoneMath::native_compute_attachment_bone_world_matrices(&avatar_def, &bone_transforms, &rot_deltas)?; let mut result = result; result.clear(); result.extend(computed); Ok(())",
    "M:LibreMetaverse.Rendering.AvatarBoneMath.ComputeGroundAdjustment(System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Rendering.BoneTransform})":
        "Ok(crate::avatar_rig::AvatarBoneMath::native_compute_ground_adjustment(bone_transforms.as_ref()))",
    "M:LibreMetaverse.Rendering.AvatarBoneMath.StripScale(System.Numerics.Matrix4x4)":
        "Ok(crate::avatar_rig::AvatarBoneMath::native_strip_scale(m))",
    "P:LibreMetaverse.Rendering.AvatarMeshDefinition.FileName":
        "self.native_file_name()",
    "P:LibreMetaverse.Rendering.AvatarMeshDefinition.LodLevel":
        "self.native_lod_level()",
    "P:LibreMetaverse.Rendering.AvatarMeshDefinition.MinPixelWidth":
        "self.native_min_pixel_width()",
    "P:LibreMetaverse.Rendering.AvatarMeshDefinition.Type":
        "self.native_type()",
    "M:LibreMetaverse.Rendering.LindenAvatarDefinition.ComputeBoneTransforms(System.Collections.Generic.IReadOnlyDictionary{System.Int32,System.Single})":
        "self.native_compute_bone_transforms(&param_values)",
    "M:LibreMetaverse.Rendering.LindenAvatarDefinition.GetAttachmentPoint(System.Int32)":
        "Ok(self.native_get_attachment_point_by_id(id))",
    "M:LibreMetaverse.Rendering.LindenAvatarDefinition.GetAttachmentPoint(System.String)":
        "Ok(self.native_get_attachment_point_by_name(&name))",
    "M:LibreMetaverse.Rendering.LindenAvatarDefinition.Load(System.String,System.String)":
        "crate::avatar_rig::LindenAvatarDefinition::native_load(lad_file_name, skeleton_file_name)",
    "P:LibreMetaverse.Rendering.LindenAvatarDefinition.AttachmentPoints":
        "self.native_attachment_points()",
    "P:LibreMetaverse.Rendering.LindenAvatarDefinition.MeshDefinitions":
        "self.native_mesh_definitions()",
    "P:LibreMetaverse.Rendering.LindenAvatarDefinition.Skeleton":
        "self.native_skeleton()",
    "M:LibreMetaverse.Rendering.RiggedSkinMath.BuildInvBindMatrices(LibreMetaverse.Rendering.MeshSkinData)":
        "crate::avatar_rig::RiggedSkinMath::native_build_inv_bind_matrices(&skin)",
    "M:LibreMetaverse.Rendering.RiggedSkinMath.ExtractJointPositionOverrides(LibreMetaverse.Rendering.MeshSkinData)":
        "crate::avatar_rig::RiggedSkinMath::native_extract_joint_position_overrides(&skin)",
    "M:LibreMetaverse.Rendering.RiggedSkinMath.FloatsToMatrix(System.Single[])":
        "Ok(crate::avatar_rig::RiggedSkinMath::native_floats_to_matrix(&f))",
    "M:LibreMetaverse.Rendering.RiggedSkinMath.NormalizeSkinWeights(System.Int32,System.Int32@,System.Single@,System.Int32@,System.Single@,System.Int32@,System.Single@,System.Int32@,System.Single@)":
        "crate::avatar_rig::RiggedSkinMath::native_normalize_skin_weights(joint_count, [j0, j1, j2, j3], [w0, w1, w2, w3]); Ok(())",
    "M:LibreMetaverse.NameValue.#ctor(System.String,LibreMetaverse.NameValue.ValueType,LibreMetaverse.NameValue.ClassType,LibreMetaverse.NameValue.SendtoType,System.Object)":
        "Ok(crate::NameValue { class_: class_type, name, sendto: sendto_type, type_: value_type, value: Some(value) })",
    "M:LibreMetaverse.Primitive.#ctor":
        "Ok(crate::current_outfit::primitive_defaults())",
    "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)":
        "crate::current_outfit::default_policy_decision(item)",
    "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)":
        "crate::current_outfit::default_policy_decision(item)",
    "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)":
        "crate::current_outfit::default_policy_report(added_items, removed_items, cancellation_token)",
    "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.#ctor":
        "crate::current_outfit::CompositeCurrentOutfitPolicy::native_new()",
    "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)":
        "self.native_add_policy(policy_to_add)",
    "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)":
        "self.native_can_attach(item)",
    "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)":
        "self.native_can_detach(item)",
    "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)":
        "self.native_remove_policy(policy_to_remove)",
    "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)":
        "self.native_report_item_change(added_items, removed_items, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.#ctor(LibreMetaverse.GridClient)":
        "crate::current_outfit::CurrentOutfitFolder::native_new(client)",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)":
        "self.native_add_policy(policy_to_add)",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddToOutfitAsync(LibreMetaverse.InventoryItem,System.Boolean,System.Threading.CancellationToken)":
        "self.native_add_to_outfit(vec![item], replace, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddToOutfitAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Boolean,System.Threading.CancellationToken)":
        "self.native_add_to_outfit(requested_items_to_add, replace, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.AttachAsync(LibreMetaverse.InventoryItem,LibreMetaverse.AttachmentPoint,System.Boolean,System.Threading.CancellationToken)":
        "self.native_attach(item, point, replace, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.CanAttachItemAsync(LibreMetaverse.InventoryItem,System.Threading.CancellationToken)":
        "self.native_can_attach_item(item, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.CanDetachItemAsync(LibreMetaverse.InventoryItem,System.Threading.CancellationToken)":
        "self.native_can_detach_item(item, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.DetachAsync(LibreMetaverse.InventoryItem,System.Threading.CancellationToken)":
        "self.native_detach(item, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.Dispose":
        "self.native_dispose()",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.FetchParentAsync(LibreMetaverse.InventoryBase,System.Threading.CancellationToken)":
        "self.native_fetch_parent(item, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.GetAttachmentItemID(LibreMetaverse.Primitive)":
        "crate::current_outfit::CurrentOutfitFolder::native_get_attachment_item_id(prim)",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.GetCurrentOutfitLinksAsync(System.Threading.CancellationToken)":
        "self.native_get_current_outfit_links(cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.GetWornAtAsync(LibreMetaverse.WearableType,System.Threading.CancellationToken)":
        "self.native_get_worn_at(type_, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.IsObjectDescendentOfAsync(LibreMetaverse.InventoryBase,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_is_object_descendent_of(item, parent_id, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemoveFromOutfitAsync(LibreMetaverse.InventoryItem,System.Threading.CancellationToken)":
        "self.native_remove_from_outfit(vec![item], cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemoveFromOutfitAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)":
        "self.native_remove_from_outfit(requested_items_to_remove, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)":
        "self.native_remove_policy(policy_to_remove)",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.ReplaceOutfitAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_replace_outfit(new_outfit_folder_id, cancellation_token).await",
    "M:LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem)":
        "self.native_resolve_inventory_link(item_link)",
    "P:LibreMetaverse.Appearance.CurrentOutfitFolder.COF":
        "self.native_cof()",
    "P:LibreMetaverse.Appearance.CurrentOutfitFolder.COF#set":
        "self.native_set_cof(value)",
    "P:LibreMetaverse.Appearance.CurrentOutfitFolder.MaxClothingLayers":
        "crate::current_outfit::MAX_CLOTHING_LAYERS",
    "M:LibreMetaverse.Appearance.InitialOutfit.#ctor(LibreMetaverse.GridClient,LibreMetaverse.Appearance.CurrentOutfitFolder)":
        "crate::initial_outfit::InitialOutfit::native_new(client, cof)",
    "M:LibreMetaverse.Appearance.InitialOutfit.CheckSystemFoldersAsync(System.Threading.CancellationToken)":
        "self.native_check_system_folders(cancellation_token).await",
    "M:LibreMetaverse.Appearance.InitialOutfit.CopyFolderAsync(LibreMetaverse.InventoryFolder,LibreMetaverse.UUID,System.Threading.CancellationToken,System.IProgress{LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress})":
        "self.native_copy_folder(folder, destination, cancellation_token, progress).await",
    "M:LibreMetaverse.Appearance.InitialOutfit.CreateFolderAsync(LibreMetaverse.UUID,System.String,LibreMetaverse.FolderType,System.Threading.CancellationToken)":
        "self.native_create_folder(parent, name, type_, cancellation_token).await",
    "M:LibreMetaverse.Appearance.InitialOutfit.FindNodeByName(LibreMetaverse.InventoryNode,System.String)":
        "crate::initial_outfit::InitialOutfit::native_find_node_by_name(root, name)",
    "M:LibreMetaverse.Appearance.InitialOutfit.SetInitialOutfitAsync(System.String,System.Threading.CancellationToken,System.IProgress{LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress})":
        "self.native_set_initial_outfit(outfit, cancellation_token, progress).await",
    "M:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.#ctor":
        "crate::initial_outfit::InitialOutfitProgress::native_new()",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.CurrentItemName":
        "self.native_current_item_name()",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.CurrentItemName#set":
        "self.native_set_current_item_name(value)",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.ItemsCopied":
        "self.native_items_copied()",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.ItemsCopied#set":
        "self.native_set_items_copied(value)",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.Message":
        "self.native_message()",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.Message#set":
        "self.native_set_message(value)",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.Phase":
        "self.native_phase()",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.Phase#set":
        "self.native_set_phase(value)",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.TotalItems":
        "self.native_total_items()",
    "P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.TotalItems#set":
        "self.native_set_total_items(value)",
    "M:LibreMetaverse.Appearance.InitialOutfitHandler.#ctor(LibreMetaverse.GridClient,LibreMetaverse.Appearance.CurrentOutfitFolder,System.IProgress{LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress})":
        "crate::initial_outfit::InitialOutfitHandler::native_new(client, cof, progress)",
    "M:LibreMetaverse.Appearance.InitialOutfitHandler.Dispose":
        "self.native_dispose()",
    "M:LibreMetaverse.AppearanceManager.#ctor(LibreMetaverse.GridClient)":
        "crate::appearance_manager::AppearanceManager::native_new(client)",
    "M:LibreMetaverse.AppearanceSetEventArgs.#ctor(System.Boolean)":
        "Ok(crate::appearance_manager::AppearanceSetEventArgs::native_new(success))",
    "P:LibreMetaverse.AppearanceSetEventArgs.Success":
        "self.native_success()",
    "M:LibreMetaverse.RebakeAvatarTexturesEventArgs.#ctor(LibreMetaverse.UUID)":
        "Ok(crate::appearance_manager::RebakeAvatarTexturesEventArgs::native_new(texture_id))",
    "P:LibreMetaverse.RebakeAvatarTexturesEventArgs.TextureID":
        "self.native_texture_id()",
    "E:LibreMetaverse.AppearanceManager.AgentWearablesReply":
        "self.native_subscribe_agent_wearables_reply(handler)",
    "E:LibreMetaverse.AppearanceManager.AppearanceSet":
        "self.native_subscribe_appearance_set(handler)",
    "E:LibreMetaverse.AppearanceManager.CachedBakesReply":
        "self.native_subscribe_cached_bakes_reply(handler)",
    "E:LibreMetaverse.AppearanceManager.RebakeAvatarRequested":
        "self.native_subscribe_rebake_avatar_requested(handler)",
    "F:LibreMetaverse.AppearanceManager.ATTACHMENT_ADD":
        "crate::appearance_manager::ATTACHMENT_ADD",
    "F:LibreMetaverse.AppearanceManager.BAKED_TEXTURE_HASH":
        "crate::appearance_manager::baked_texture_hash()",
    "F:LibreMetaverse.AppearanceManager.BakeIndexToTextureIndex":
        "crate::appearance_manager::bake_index_to_texture_index()",
    "F:LibreMetaverse.AppearanceManager.DEFAULT_AVATAR_TEXTURE":
        "crate::appearance_manager::default_avatar_texture()",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_AUX1":
        "crate::appearance_manager::img_use_baked(crate::BakeType::BakedAux1)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_AUX2":
        "crate::appearance_manager::img_use_baked(crate::BakeType::BakedAux2)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_AUX3":
        "crate::appearance_manager::img_use_baked(crate::BakeType::BakedAux3)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_EYES":
        "crate::appearance_manager::img_use_baked(crate::BakeType::Eyes)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_HAIR":
        "crate::appearance_manager::img_use_baked(crate::BakeType::Hair)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_HEAD":
        "crate::appearance_manager::img_use_baked(crate::BakeType::Head)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_INDICES":
        "crate::appearance_manager::img_use_baked_indices()",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_LEFTARM":
        "crate::appearance_manager::img_use_baked(crate::BakeType::BakedLeftArm)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_LEFTLEG":
        "crate::appearance_manager::img_use_baked(crate::BakeType::BakedLeftLeg)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_LOWER":
        "crate::appearance_manager::img_use_baked(crate::BakeType::LowerBody)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_SKIRT":
        "crate::appearance_manager::img_use_baked(crate::BakeType::Skirt)",
    "F:LibreMetaverse.AppearanceManager.IMG_USE_BAKED_UPPER":
        "crate::appearance_manager::img_use_baked(crate::BakeType::UpperBody)",
    "F:LibreMetaverse.AppearanceManager.WEARABLE_BAKE_MAP":
        "crate::appearance_manager::wearable_bake_map()",
    "M:LibreMetaverse.AppearanceManager.AddAttachments(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Boolean,System.Boolean)":
        "self.native_add_attachments(attachments, remove_existing_first, replace.unwrap_or(false))",
    "M:LibreMetaverse.AppearanceManager.AddToOutfit(LibreMetaverse.InventoryItem,System.Boolean)":
        "self.native_add_to_outfit(vec![wearable_item], replace.unwrap_or(false))",
    "M:LibreMetaverse.AppearanceManager.AddToOutfit(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Boolean)":
        "self.native_add_to_outfit(wearable_items, replace.unwrap_or(false))",
    "M:LibreMetaverse.AppearanceManager.BakeTypeToAgentTextureIndex(LibreMetaverse.BakeType)":
        "Ok(crate::appearance_manager::bake_type_to_agent_texture_index(index))",
    "M:LibreMetaverse.AppearanceManager.BakeTypeToTextures(LibreMetaverse.BakeType)":
        "Ok(crate::appearance_manager::bake_type_to_textures(bake_type))",
    "M:LibreMetaverse.AppearanceManager.Attach(LibreMetaverse.InventoryItem,LibreMetaverse.AttachmentPoint,System.Boolean)":
        "self.native_attach(item, attach_point, replace.unwrap_or(false))",
    "M:LibreMetaverse.AppearanceManager.Attach(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.Permissions,System.UInt32,LibreMetaverse.AttachmentPoint,System.Boolean)":
        "self.native_attach_fields(item_id, owner_id, name, description, perms, item_flags, attach_point, replace.unwrap_or(false))",
    "M:LibreMetaverse.AppearanceManager.Detach(LibreMetaverse.InventoryItem)":
        "self.native_detach(item.base.uuid())",
    "M:LibreMetaverse.AppearanceManager.Detach(LibreMetaverse.UUID)":
        "self.native_detach(item_id)",
    "M:LibreMetaverse.AppearanceManager.DecodeWearableParams(LibreMetaverse.AppearanceManager.WearableData,LibreMetaverse.AppearanceManager.TextureData[]@)":
        "crate::appearance_manager::decode_wearable_params(wearable, textures)",
    "M:LibreMetaverse.AppearanceManager.Dispose":
        "self.native_dispose()",
    "M:LibreMetaverse.AppearanceManager.GetAttachments":
        "self.native_get_attachments()",
    "M:LibreMetaverse.AppearanceManager.GetAttachmentsByAttachmentPointAsync(System.Threading.CancellationToken)":
        "self.native_get_attachments_by_point(cancellation_token).await",
    "M:LibreMetaverse.AppearanceManager.GetAttachmentsByInventoryItem":
        "self.native_get_attachments_by_item()",
    "M:LibreMetaverse.AppearanceManager.GetAttachmentsByItemId":
        "self.native_get_attachments_by_id()",
    "M:LibreMetaverse.AppearanceManager.GetCurrentOutfitFolderAsync(System.Threading.CancellationToken)":
        "self.native_get_current_outfit_folder(cancellation_token).await",
    "M:LibreMetaverse.AppearanceManager.GetColorFromParams(System.Collections.Generic.List{LibreMetaverse.AppearanceManager.ColorParamInfo})":
        "crate::appearance_manager::color_from_params(param)",
    "M:LibreMetaverse.AppearanceManager.GetFolderWearablesAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_get_folder_wearables(folder, cancellation_token).await",
    "M:LibreMetaverse.AppearanceManager.GetWearableAssets(LibreMetaverse.WearableType)":
        "self.native_get_wearable_assets(type_)",
    "M:LibreMetaverse.AppearanceManager.GetWearables":
        "self.native_get_wearables()",
    "M:LibreMetaverse.AppearanceManager.GetWearablesByType":
        "self.native_get_wearables_by_type()",
    "M:LibreMetaverse.AppearanceManager.GetCurrentParamValues":
        "self.native_get_current_param_values()",
    "M:LibreMetaverse.AppearanceManager.IsItemWorn(LibreMetaverse.InventoryItem)":
        "self.native_is_item_worn(item.base.uuid())",
    "M:LibreMetaverse.AppearanceManager.IsItemWorn(LibreMetaverse.UUID)":
        "Ok(self.native_is_item_worn(item_id)? != libremetaverse_types::WearableType::Invalid)",
    "M:LibreMetaverse.AppearanceManager.RemoveFromOutfit(LibreMetaverse.InventoryItem)":
        "self.native_remove_from_outfit(vec![wearable_item])",
    "M:LibreMetaverse.AppearanceManager.RemoveFromOutfit(System.Collections.Generic.List{LibreMetaverse.InventoryItem})":
        "self.native_remove_from_outfit(wearable_items)",
    "M:LibreMetaverse.AppearanceManager.ReplaceOutfitAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem})":
        "self.native_replace_outfit(wearable_items, false).await",
    "M:LibreMetaverse.AppearanceManager.ReplaceOutfitAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Boolean)":
        "self.native_replace_outfit(wearable_items, safe).await",
    "M:LibreMetaverse.AppearanceManager.RequestAgentWornAsync(System.Threading.CancellationToken)":
        "self.native_request_agent_worn(cancellation_token).await",
    "M:LibreMetaverse.AppearanceManager.MakeAppearancePacket":
        "self.native_make_appearance_packet()",
    "M:LibreMetaverse.AppearanceManager.MorphLayerForBakeType(LibreMetaverse.BakeType)":
        "Ok(crate::appearance_manager::morph_layer_for_bake_type(bake_type))",
    "M:LibreMetaverse.AppearanceManager.RequestCachedBakes":
        "self.native_request_cached_bakes()",
    "M:LibreMetaverse.AppearanceManager.RequestSetAppearance(System.Boolean)":
        "self.native_request_set_appearance(force_rebake.unwrap_or(false)).await",
    "M:LibreMetaverse.AppearanceManager.ServerBakingRegion":
        "self.native_server_baking_region()",
    "M:LibreMetaverse.AppearanceManager.SendOutfitToCurrentSimulatorAsync(System.Threading.CancellationToken)":
        "self.native_send_outfit(cancellation_token).await",
    "M:LibreMetaverse.AppearanceManager.UpdateLastReceivedCOFVersion(System.Int32)":
        "self.native_update_cof_version(cof_version)",
    "M:LibreMetaverse.AppearanceManager.WearOutfitAsync(System.Collections.Generic.List{LibreMetaverse.InventoryBase},System.Boolean)":
        "self.native_wear_outfit(wearables, replace_items).await",
    "M:LibreMetaverse.AppearanceManager.WearableTypeToAssetType(LibreMetaverse.WearableType)":
        "Ok(crate::appearance_manager::wearable_type_to_asset_type(type_))",
    "M:LibreMetaverse.AppearanceManager.isItemAttached(LibreMetaverse.InventoryItem)":
        "Ok(self.native_is_item_attached(item.base.uuid()))",
    "M:LibreMetaverse.AppearanceManager.isItemAttached(LibreMetaverse.UUID)":
        "Ok(self.native_is_item_attached(key))",
    "P:LibreMetaverse.AppearanceManager.LastUpdateReceivedCOFVersion":
        "self.native_last_cof_version()",
    "P:LibreMetaverse.AppearanceManager.ManagerBusy":
        "self.native_manager_busy()",
    "P:LibreMetaverse.AppearanceManager.TextureProvider":
        "self.native_texture_provider()",
    "P:LibreMetaverse.AppearanceManager.TextureProvider#set":
        "self.native_set_texture_provider(value)",
    "M:LibreMetaverse.AppearanceManager.TextureData.#ctor":
        "crate::appearance_manager::texture_data_defaults()",
    "M:LibreMetaverse.AppearanceManager.TextureData.ToString":
        "crate::appearance_manager::texture_data_to_string(self)",
    "M:LibreMetaverse.AppearanceManager.WearableData.#ctor":
        "crate::appearance_manager::wearable_data_defaults()",
    "M:LibreMetaverse.AppearanceManager.WearableData.ToString":
        "crate::appearance_manager::wearable_data_to_string(self)",
    "M:LibreMetaverse.GridClientBakingTextureProvider.#ctor(LibreMetaverse.GridClient)":
        "crate::baking_texture_provider::GridClientBakingTextureProvider::native_new(client)",
    "M:LibreMetaverse.GridClientBakingTextureProvider.RequestTextureAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_request_texture(texture_id, cancellation_token).await",
    "M:LibreMetaverse.Imaging.Baker.#ctor(LibreMetaverse.BakeType)":
        "crate::appearance_baker::Baker::native_new(bake_type)",
    "M:LibreMetaverse.Imaging.Baker.AddTexture(LibreMetaverse.AppearanceManager.TextureData)":
        "self.native_add_texture(tdata)",
    "M:LibreMetaverse.Imaging.Baker.Bake":
        "self.native_bake()",
    "M:LibreMetaverse.Imaging.Baker.BakeTypeFor(LibreMetaverse.AvatarTextureIndex)":
        "Ok(crate::appearance_baker::Baker::native_bake_type_for(index))",
    "M:LibreMetaverse.Imaging.Baker.LoadResourceLayer(System.String)":
        "crate::appearance_baker::Baker::native_load_resource_layer(file_name)",
    "P:LibreMetaverse.Imaging.Baker.BakeHeight":
        "self.native_bake_height()",
    "P:LibreMetaverse.Imaging.Baker.BakeType":
        "self.native_bake_type()",
    "P:LibreMetaverse.Imaging.Baker.BakeWidth":
        "self.native_bake_width()",
    "P:LibreMetaverse.Imaging.Baker.BakedTexture":
        "self.native_baked_texture()",
    "P:LibreMetaverse.Imaging.Baker.Textures":
        "self.native_textures()",
    "P:LibreMetaverse.GridClient.Appearance":
        "self.native_appearance().unwrap_or_else(|_| panic!(\"failed to construct AppearanceManager\"))",
    "P:LibreMetaverse.GridClient.Appearance#set":
        "self.native_set_appearance(value)",
    "P:LibreMetaverse.GridClient.Animesh":
        "self.native_animesh().unwrap_or_else(|_| panic!(\"failed to construct AnimeshManager\"))",
    "P:LibreMetaverse.GridClient.Animesh#set":
        "self.native_set_animesh(value)",
    "P:LibreMetaverse.GridClient.Avatars":
        "self.native_avatars().unwrap_or_else(|_| panic!(\"failed to construct AvatarManager\"))",
    "P:LibreMetaverse.GridClient.Avatars#set":
        "self.native_set_avatars(value)",
    "M:LibreMetaverse.AvatarManager.#ctor(LibreMetaverse.GridClient)":
        "crate::avatar_manager::AvatarManager::native_new(client)",
    "M:LibreMetaverse.AvatarManager.AgentProfileAvailable":
        "self.native_capability_available(\"AgentProfile\")",
    "M:LibreMetaverse.AvatarManager.DisplayNamesAvailable":
        "self.native_capability_available(\"GetDisplayNames\")",
    "M:LibreMetaverse.AvatarManager.Dispose":
        "self.native_dispose()",
    "M:LibreMetaverse.AvatarManager.RequestOwnAvatarTextures":
        "self.native_request_own_avatar_textures()",
    "M:LibreMetaverse.AvatarManager.RequestTrackAgent(LibreMetaverse.UUID)":
        "self.native_request_track_agent(prey_id)",
    "M:LibreMetaverse.AvatarManager.RequestAvatarName(LibreMetaverse.UUID)":
        "self.native_request_avatar_names(&[id])",
    "M:LibreMetaverse.AvatarManager.RequestAvatarNames(System.Collections.Generic.List{LibreMetaverse.UUID})":
        "self.native_request_avatar_names(&ids)",
    "M:LibreMetaverse.AvatarManager.RequestAvatarProperties(LibreMetaverse.UUID)":
        "self.native_request_avatar_properties(avatarid)",
    "M:LibreMetaverse.AvatarManager.RequestAvatarNameSearch(System.String,LibreMetaverse.UUID)":
        "self.native_request_avatar_name_search(name, query_id)",
    "M:LibreMetaverse.AvatarManager.RequestAvatarNotes(LibreMetaverse.UUID)":
        "self.native_request_generic(\"avatarnotesrequest\", &[avatarid])",
    "M:LibreMetaverse.AvatarManager.RequestAvatarPicks(LibreMetaverse.UUID)":
        "self.native_request_generic(\"avatarpicksrequest\", &[avatarid])",
    "M:LibreMetaverse.AvatarManager.RequestAvatarClassified(LibreMetaverse.UUID)":
        "self.native_request_generic(\"avatarclassifiedsrequest\", &[avatarid])",
    "M:LibreMetaverse.AvatarManager.RequestPickInfo(LibreMetaverse.UUID,LibreMetaverse.UUID)":
        "self.native_request_generic(\"pickinforequest\", &[avatarid, pickid])",
    "M:LibreMetaverse.AvatarManager.RequestClassifiedInfo(LibreMetaverse.UUID)":
        "self.native_request_classified_info(classifiedid)",
    "M:LibreMetaverse.AvatarManager.GetDisplayNamesAsync(System.Collections.Generic.List{LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_get_display_names(ids, cancellation_token).await",
    "M:LibreMetaverse.AvatarManager.RequestAgentProfileAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_request_agent_profile(avatarid, cancellation_token).await",
    "M:LibreMetaverse.Messages.Linden.AgentProfileMessage.#ctor":
        "Ok(crate::avatar_manager::agent_profile_defaults())",
    "M:LibreMetaverse.Messages.Linden.AgentProfileMessage.Deserialize(LibreMetaverse.StructuredData.OSDMap)":
        "crate::avatar_manager::deserialize_agent_profile(self, &map)",
    "M:LibreMetaverse.Messages.Linden.AgentProfileMessage.Serialize":
        "crate::avatar_manager::serialize_agent_profile(self)",
    "M:LibreMetaverse.Messages.Linden.AgentProfileMessage.GroupData.#ctor":
        "Ok(crate::avatar_manager::agent_profile_group_defaults())",
    "M:LibreMetaverse.Avatar.AvatarProperties.FromOSD(LibreMetaverse.StructuredData.OSD)":
        "crate::agent_messages::avatar_properties_from_osd(o)",
    "M:LibreMetaverse.Avatar.AvatarProperties.GetOSD":
        "crate::agent_messages::avatar_properties_get_osd(self)",
    "P:LibreMetaverse.Avatar.AvatarProperties.AllowPublish":
        "self.flags.0 & crate::ProfileFlags::ALLOW_PUBLISH.0 != 0",
    "P:LibreMetaverse.Avatar.AvatarProperties.AllowPublish#set":
        "if value { self.flags.0 |= crate::ProfileFlags::ALLOW_PUBLISH.0 } else { self.flags.0 &= !crate::ProfileFlags::ALLOW_PUBLISH.0 }",
    "P:LibreMetaverse.Avatar.AvatarProperties.Identified":
        "self.flags.0 & crate::ProfileFlags::IDENTIFIED.0 != 0",
    "P:LibreMetaverse.Avatar.AvatarProperties.Identified#set":
        "if value { self.flags.0 |= crate::ProfileFlags::IDENTIFIED.0 } else { self.flags.0 &= !crate::ProfileFlags::IDENTIFIED.0 }",
    "P:LibreMetaverse.Avatar.AvatarProperties.MaturePublish":
        "self.flags.0 & crate::ProfileFlags::MATURE_PUBLISH.0 != 0",
    "P:LibreMetaverse.Avatar.AvatarProperties.MaturePublish#set":
        "if value { self.flags.0 |= crate::ProfileFlags::MATURE_PUBLISH.0 } else { self.flags.0 &= !crate::ProfileFlags::MATURE_PUBLISH.0 }",
    "P:LibreMetaverse.Avatar.AvatarProperties.Online":
        "self.flags.0 & crate::ProfileFlags::ONLINE.0 != 0",
    "P:LibreMetaverse.Avatar.AvatarProperties.Online#set":
        "if value { self.flags.0 |= crate::ProfileFlags::ONLINE.0 } else { self.flags.0 &= !crate::ProfileFlags::ONLINE.0 }",
    "P:LibreMetaverse.Avatar.AvatarProperties.Transacted":
        "self.flags.0 & crate::ProfileFlags::TRANSACTED.0 != 0",
    "P:LibreMetaverse.Avatar.AvatarProperties.Transacted#set":
        "if value { self.flags.0 |= crate::ProfileFlags::TRANSACTED.0 } else { self.flags.0 &= !crate::ProfileFlags::TRANSACTED.0 }",
    "M:LibreMetaverse.Avatar.Interests.FromOSD(LibreMetaverse.StructuredData.OSD)":
        "crate::agent_messages::avatar_interests_from_osd(o)",
    "M:LibreMetaverse.Avatar.Interests.GetOSD":
        "crate::agent_messages::avatar_interests_get_osd(self)",
    "M:LibreMetaverse.TransactionInfo.#ctor":
        "Ok(crate::TransactionInfo { amount: 0, dest_id: libremetaverse_types::UUID::zero(), is_dest_group: false, is_source_group: false, item_description: String::new(), source_id: libremetaverse_types::UUID::zero(), transaction_type: 0 })",
    "M:LibreMetaverse.AgentSettings.#ctor":
        "Ok(crate::client_core::agent_settings_defaults())",
    "M:LibreMetaverse.AssetCacheSettings.#ctor":
        "Ok(crate::client_core::asset_cache_settings_defaults())",
    "M:LibreMetaverse.ConnectionSettings.#ctor":
        "Ok(crate::client_core::connection_settings_defaults())",
    "M:LibreMetaverse.LoggingSettings.#ctor":
        "Ok(crate::client_core::logging_settings_defaults())",
    "M:LibreMetaverse.PacketSettings.#ctor":
        "Ok(crate::client_core::packet_settings_defaults())",
    "M:LibreMetaverse.ParcelSettings.#ctor":
        "Ok(crate::client_core::parcel_settings_defaults())",
    "M:LibreMetaverse.TexturePipelineSettings.#ctor":
        "Ok(crate::client_core::texture_pipeline_settings_defaults())",
    "M:LibreMetaverse.TimingSettings.#ctor":
        "Ok(crate::client_core::timing_settings_defaults())",
    "M:LibreMetaverse.WorldSettings.#ctor":
        "Ok(crate::client_core::world_settings_defaults())",
    "M:LibreMetaverse.GridClient.#ctor":
        "crate::client_core::GridClientBuilder::default().build().map_err(Into::into)",
    "M:LibreMetaverse.GridClient.Dispose":
        "self.shutdown().map_err(Into::into)",
    "M:LibreMetaverse.GridClient.DisposeAsync":
        "self.shutdown().map_err(Into::into)",
    "M:LibreMetaverse.GridClient.ToString":
        "String::new()",
    "P:LibreMetaverse.GridClient.CapsRateLimiter":
        "self.native_caps_rate_limiter()",
    "P:LibreMetaverse.GridClient.CapsRateLimiter#set":
        "self.native_set_caps_rate_limiter(value)",
    "P:LibreMetaverse.GridClient.HttpCapsClient":
        "self.native_http_caps_client()",
    "P:LibreMetaverse.GridClient.HttpCapsClient#set":
        "self.native_set_http_caps_client(value)",
    "P:LibreMetaverse.GridClient.Assets":
        "self.native_assets().unwrap_or_else(|_| panic!(\"failed to construct AssetManager\"))",
    "P:LibreMetaverse.GridClient.Assets#set":
        "self.native_set_assets(value)",
    "P:LibreMetaverse.GridClient.Objects":
        "self.native_objects().unwrap_or_else(|_| panic!(\"failed to construct ObjectManager\"))",
    "P:LibreMetaverse.GridClient.Objects#set":
        "self.native_set_objects(value)",
    "P:LibreMetaverse.GridClient.Inventory":
        "self.native_inventory().unwrap_or_else(|_| panic!(\"failed to construct InventoryManager\"))",
    "P:LibreMetaverse.GridClient.Inventory#set":
        "self.native_set_inventory(value)",
    "P:LibreMetaverse.GridClient.AisClient":
        "self.native_ais_client().unwrap_or_else(|_| panic!(\"failed to construct InventoryAISClient\"))",
    "P:LibreMetaverse.GridClient.AisClient#set":
        "self.native_set_ais_client(value)",
    "P:LibreMetaverse.GridClient.Network":
        "self.native_network().unwrap_or_else(|_| panic!(\"failed to construct NetworkManager\"))",
    "P:LibreMetaverse.GridClient.Network#set":
        "self.native_set_network(value)",
    "P:LibreMetaverse.GridClient.Self":
        "self.native_self()",
    "E:LibreMetaverse.InventoryManager.FindObjectByPathReply":
        "self.native_subscribe_find_object_by_path_reply(handler)",
    "E:LibreMetaverse.InventoryManager.FolderUpdated":
        "self.native_subscribe_folder_updated(handler)",
    "E:LibreMetaverse.InventoryManager.InventoryObjectOffered":
        "self.native_subscribe_inventory_object_offered(handler)",
    "E:LibreMetaverse.InventoryManager.ItemReceived":
        "self.native_subscribe_item_received(handler)",
    "E:LibreMetaverse.InventoryManager.SaveAssetToInventory":
        "self.native_subscribe_save_asset_to_inventory(handler)",
    "E:LibreMetaverse.InventoryManager.ScriptRunningReply":
        "self.native_subscribe_script_running_reply(handler)",
    "E:LibreMetaverse.InventoryManager.TaskInventoryReply":
        "self.native_subscribe_task_inventory_reply(handler)",
    "E:LibreMetaverse.InventoryManager.TaskItemReceived":
        "self.native_subscribe_task_item_received(handler)",
    "F:LibreMetaverse.InventoryManager.MAGIC_ID":
        "crate::inventory_manager::InventoryManager::native_magic_id()",
    "M:LibreMetaverse.InventoryManager.#ctor(LibreMetaverse.GridClient)":
        "crate::inventory_manager::InventoryManager::native_new(client)",
    "F:LibreMetaverse.InventoryAISClient.INVENTORY_CAP_NAME":
        "crate::inventory_ais::InventoryAISClient::INVENTORY_CAP_NAME",
    "F:LibreMetaverse.InventoryAISClient.LIBRARY_CAP_NAME":
        "crate::inventory_ais::InventoryAISClient::LIBRARY_CAP_NAME",
    "M:LibreMetaverse.InventoryAISClient.#ctor(LibreMetaverse.GridClient)":
        "crate::inventory_ais::InventoryAISClient::native_new(client)",
    "M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient)":
        "crate::object_material::ObjectManager::native_new(client)",
    "M:LibreMetaverse.ObjectManager.CleanupObjectTracking":
        "{ self.native_cleanup_tracking(); Ok(()) }",
    "M:LibreMetaverse.ObjectManager.Dispose":
        "{ self.native_dispose(); Ok(()) }",
    "M:LibreMetaverse.ObjectManager.RequestObject(LibreMetaverse.Simulator,System.UInt32)":
        "self.native_request_objects(simulator, vec![local_id])",
    "M:LibreMetaverse.ObjectManager.RequestObjects(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32})":
        "self.native_request_objects(simulator, local_i_ds)",
    "M:LibreMetaverse.ObjectManager.SelectObject(LibreMetaverse.Simulator,System.UInt32)":
        "self.native_select_objects(simulator, vec![local_id], true)",
    "M:LibreMetaverse.ObjectManager.SelectObject(LibreMetaverse.Simulator,System.UInt32,System.Boolean)":
        "self.native_select_objects(simulator, vec![local_id], automatic_deselect)",
    "M:LibreMetaverse.ObjectManager.SelectObjects(LibreMetaverse.Simulator,System.UInt32[])":
        "self.native_select_objects(simulator, local_i_ds, true)",
    "M:LibreMetaverse.ObjectManager.SelectObjects(LibreMetaverse.Simulator,System.UInt32[],System.Boolean)":
        "self.native_select_objects(simulator, local_i_ds, automatic_deselect)",
    "M:LibreMetaverse.ObjectManager.DeselectObject(LibreMetaverse.Simulator,System.UInt32)":
        "self.native_deselect_objects(simulator, vec![local_id])",
    "M:LibreMetaverse.ObjectManager.DeselectObjects(LibreMetaverse.Simulator,System.UInt32[])":
        "self.native_deselect_objects(simulator, local_i_ds)",
    "M:LibreMetaverse.ObjectManager.LinkPrims(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32})":
        "self.native_link_objects(simulator, local_i_ds, true)",
    "M:LibreMetaverse.ObjectManager.DelinkPrims(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32})":
        "self.native_link_objects(simulator, local_i_ds, false)",
    "M:LibreMetaverse.ObjectManager.RequestPayPrice(LibreMetaverse.Simulator,LibreMetaverse.UUID)":
        "self.native_request_pay_price(simulator, object_id)",
    "M:LibreMetaverse.ObjectManager.RequestObjectPropertiesFamily(LibreMetaverse.Simulator,LibreMetaverse.UUID)":
        "self.native_request_properties_family(simulator, object_id, true)",
    "M:LibreMetaverse.ObjectManager.RequestObjectPropertiesFamily(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Boolean)":
        "self.native_request_properties_family(simulator, object_id, reliable)",
    "M:LibreMetaverse.ObjectManager.SetName(LibreMetaverse.Simulator,System.UInt32,System.String)":
        "self.native_set_names(simulator, vec![local_id], vec![name])",
    "M:LibreMetaverse.ObjectManager.SetNames(LibreMetaverse.Simulator,System.UInt32[],System.String[])":
        "self.native_set_names(simulator, local_i_ds, names)",
    "M:LibreMetaverse.ObjectManager.SetDescription(LibreMetaverse.Simulator,System.UInt32,System.String)":
        "self.native_set_descriptions(simulator, vec![local_id], vec![description])",
    "M:LibreMetaverse.ObjectManager.SetDescriptions(LibreMetaverse.Simulator,System.UInt32[],System.String[])":
        "self.native_set_descriptions(simulator, local_i_ds, descriptions)",
    "M:LibreMetaverse.ObjectManager.UpdateObject(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Vector3,LibreMetaverse.UpdateType)":
        "self.native_update_vector(simulator, local_id, data, type_)",
    "M:LibreMetaverse.ObjectManager.SetPosition(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Vector3)":
        "self.native_update_vector(simulator, local_id, position, crate::UpdateType(crate::UpdateType::POSITION.0 | crate::UpdateType::LINKED.0))",
    "M:LibreMetaverse.ObjectManager.SetPosition(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Vector3,System.Boolean)":
        "self.native_update_vector(simulator, local_id, position, crate::UpdateType(crate::UpdateType::POSITION.0 | if child_only { 0 } else { crate::UpdateType::LINKED.0 }))",
    "M:LibreMetaverse.ObjectManager.SetScale(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Vector3,System.Boolean,System.Boolean)":
        "self.native_update_vector(simulator, local_id, scale, crate::UpdateType(crate::UpdateType::SCALE.0 | if child_only { 0 } else { crate::UpdateType::LINKED.0 } | if uniform { crate::UpdateType::UNIFORM.0 } else { 0 }))",
    "M:LibreMetaverse.ObjectManager.SetRotation(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Quaternion)":
        "self.native_update_rotation(simulator, local_id, rotation, false)",
    "M:LibreMetaverse.ObjectManager.SetRotation(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Quaternion,System.Boolean)":
        "self.native_update_rotation(simulator, local_id, quat, child_only)",
    "M:LibreMetaverse.ObjectManager.GetPrimitive(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.UUID,System.Boolean)":
        "self.native_get_primitive(simulator, local_id, full_id, create_if_missing)",
    "M:LibreMetaverse.ObjectManager.TrackObjectInSimulator(LibreMetaverse.UUID,LibreMetaverse.Simulator)":
        "{ self.native_track(object_id, sim); Ok(()) }",
    "M:LibreMetaverse.ObjectManager.UntrackObjectInSimulator(LibreMetaverse.UUID,LibreMetaverse.Simulator)":
        "{ self.native_untrack(object_id, &sim); Ok(()) }",
    "M:LibreMetaverse.ObjectManager.GetSimulatorsForObject(LibreMetaverse.UUID)":
        "Ok(self.native_simulators_for(object_id))",
    "M:LibreMetaverse.ObjectManager.IsNearBorder(LibreMetaverse.Vector3,System.UInt32,System.UInt32,System.Single)":
        "crate::object_material::ObjectManager::native_is_near_border(position, region_size_x, region_size_y, threshold)",
    "M:LibreMetaverse.ObjectManager.BuyObject(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.SaleType,System.Int32,LibreMetaverse.UUID,LibreMetaverse.UUID)":
        "self.native_buy_object(simulator, local_id, sale_type, price, group_id, category_id)",
    "M:LibreMetaverse.ObjectManager.AttachObject(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.AttachmentPoint,LibreMetaverse.Quaternion)":
        "self.native_attach(simulator, local_id, attach_point, rotation)",
    "M:LibreMetaverse.ObjectManager.DropObject(LibreMetaverse.Simulator,System.UInt32)":
        "self.native_attachment_action(simulator, vec![local_id], true)",
    "M:LibreMetaverse.ObjectManager.DetachObjects(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32})":
        "self.native_attachment_action(simulator, local_i_ds, false)",
    "M:LibreMetaverse.ObjectManager.SetObjectsGroup(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32},LibreMetaverse.UUID)":
        "self.native_set_group(simulator, local_ids, group_id)",
    "M:LibreMetaverse.ObjectManager.SetPermissions(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32},LibreMetaverse.PermissionWho,LibreMetaverse.PermissionMask,System.Boolean)":
        "self.native_set_permissions(simulator, local_i_ds, who, permissions, set)",
    "M:LibreMetaverse.ObjectManager.DeedObject(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.UUID)":
        "self.native_deed_objects(simulator, vec![local_id], group_owner)",
    "M:LibreMetaverse.ObjectManager.DeedObjects(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32},LibreMetaverse.UUID)":
        "self.native_deed_objects(simulator, local_i_ds, group_owner)",
    "M:LibreMetaverse.ObjectManager.SetSaleInfo(LibreMetaverse.Simulator,System.Collections.Generic.List{System.UInt32},LibreMetaverse.SaleType,System.Int32)":
        "self.native_set_sale_info(simulator, local_i_ds, sale_type, price)",
    "M:LibreMetaverse.ObjectManager.SetSaleInfo(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.SaleType,System.Int32)":
        "self.native_set_sale_info(simulator, vec![local_id], sale_type, price)",
    "M:LibreMetaverse.ObjectManager.SetFlags(LibreMetaverse.Simulator,System.UInt32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)":
        "self.native_set_flags(simulator, local_id, physical, temporary, phantom, casts_shadow, libremetaverse_types::PhysicsShapeType::Prim, 1000.0, 0.6, 0.5, 1.0)",
    "M:LibreMetaverse.ObjectManager.SetFlags(LibreMetaverse.Simulator,System.UInt32,System.Boolean,System.Boolean,System.Boolean,System.Boolean,LibreMetaverse.PhysicsShapeType,System.Single,System.Single,System.Single,System.Single)":
        "self.native_set_flags(simulator, local_id, physical, temporary, phantom, casts_shadow, physics_type, density, friction, restitution, gravity_multiplier)",
    "M:LibreMetaverse.ObjectManager.ClickObjectAsync(LibreMetaverse.Simulator,System.UInt32,System.Threading.CancellationToken)":
        "self.native_click_object(simulator, local_id, libremetaverse_types::Vector3::zero(), libremetaverse_types::Vector3::zero(), 0, libremetaverse_types::Vector3::zero(), libremetaverse_types::Vector3::zero(), libremetaverse_types::Vector3::zero(), cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.ClickObjectAsync(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Int32,LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
        "self.native_click_object(simulator, local_id, uv_coord, st_coord, face_index, position, normal, binormal, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.UUID,LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Quaternion)":
        "self.native_add_prim(simulator, prim, group_id, position, scale, rotation, libremetaverse_types::PrimFlags::CREATE_SELECTED)",
    "M:LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.UUID,LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Quaternion,LibreMetaverse.PrimFlags)":
        "self.native_add_prim(simulator, prim, group_id, position, scale, rotation, create_flags)",
    "M:LibreMetaverse.ObjectManager.AddTree(LibreMetaverse.Simulator,LibreMetaverse.Vector3,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.Tree,LibreMetaverse.UUID,System.Boolean)":
        "self.native_add_foliage(simulator, scale, rotation, position, tree_type as u8, group_owner, if new_tree { libremetaverse_types::PCode::NewTree } else { libremetaverse_types::PCode::Tree })",
    "M:LibreMetaverse.ObjectManager.AddGrass(LibreMetaverse.Simulator,LibreMetaverse.Vector3,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.Grass,LibreMetaverse.UUID)":
        "self.native_add_foliage(simulator, scale, rotation, position, grass_type as u8, group_owner, libremetaverse_types::PCode::Grass)",
    "M:LibreMetaverse.ObjectManager.BuildBasicShape(LibreMetaverse.PrimType)":
        "crate::object_material::ObjectManager::native_basic_shape(type_)",
    "M:LibreMetaverse.ObjectManager.SetTextures(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Primitive.TextureEntry)":
        "self.native_set_textures(simulator, local_id, textures, String::new())",
    "M:LibreMetaverse.ObjectManager.SetTextures(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Primitive.TextureEntry,System.String)":
        "self.native_set_textures(simulator, local_id, textures, media_url)",
    "M:LibreMetaverse.ObjectManager.SetLight(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Primitive.LightData)":
        "{ let in_use = light.intensity != 0.0; let data = light.get_bytes()?; self.native_set_extra_param(simulator, local_id, libremetaverse_types::ExtraParamType::LIGHT, in_use, data) }",
    "M:LibreMetaverse.ObjectManager.SetFlexible(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Primitive.FlexibleData)":
        "{ let data = flexible.get_bytes()?; self.native_set_extra_param(simulator, local_id, libremetaverse_types::ExtraParamType::FLEXIBLE, true, data) }",
    "M:LibreMetaverse.ObjectManager.SetSculpt(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Primitive.SculptData)":
        "self.native_set_sculpt(simulator, local_id, sculpt)",
    "M:LibreMetaverse.ObjectManager.SetExtraParamOff(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.ExtraParamType)":
        "self.native_set_extra_param(simulator, local_id, type_, false, Vec::new())",
    "M:LibreMetaverse.ObjectManager.SetShape(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Primitive.ConstructionData)":
        "self.native_set_shape(simulator, local_id, prim)",
    "M:LibreMetaverse.ObjectManager.SetMaterial(LibreMetaverse.Simulator,System.UInt32,LibreMetaverse.Material)":
        "self.native_set_material(simulator, local_id, material)",
    "M:LibreMetaverse.ObjectManager.NavigateObjectMediaAsync(LibreMetaverse.UUID,System.Int32,System.String,LibreMetaverse.Simulator,System.Threading.CancellationToken)":
        "self.native_navigate_object_media(prim_id, face, new_url, sim, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.UpdateObjectMediaAsync(LibreMetaverse.UUID,LibreMetaverse.MediaEntry[],LibreMetaverse.Simulator,System.Threading.CancellationToken)":
        "self.native_update_object_media(prim_id, face_media, sim, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.RequestObjectMediaAsync(LibreMetaverse.UUID,LibreMetaverse.Simulator,System.Threading.CancellationToken)":
        "self.native_request_object_media(prim_id, sim, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.RequestMaterialsAsync(LibreMetaverse.Simulator,System.Threading.CancellationToken)":
        "self.native_request_materials(sim, None, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.RequestMaterialsAsync(LibreMetaverse.Simulator,System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_request_materials(sim, Some(materials.collect()), cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.SendMaterialUpdatesAsync(LibreMetaverse.Simulator,System.Collections.Generic.IEnumerable{LibreMetaverse.GLTFMaterialUpdate},System.Threading.CancellationToken)":
        "self.native_send_material_updates(sim, updates, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.SetMaterialOverrideAsync(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Int32,LibreMetaverse.Assets.AssetMaterial,System.Threading.CancellationToken)":
        "self.native_set_material_override(sim, object_id, side, override_material, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.ClearMaterialOverrideAsync(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Int32,System.Threading.CancellationToken)":
        "self.native_clear_material_override(sim, object_id, side, cancellation_token).await",
    "M:LibreMetaverse.ObjectManager.ApplyMaterialAsync(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Int32,LibreMetaverse.UUID,LibreMetaverse.Assets.AssetMaterial,System.Threading.CancellationToken)":
        "self.native_apply_material(sim, object_id, side, material_asset_id, override_material, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestUpdateMaterialAgentInventoryAsync(LibreMetaverse.Assets.AssetMaterial,LibreMetaverse.UUID,System.Threading.CancellationToken,System.IProgress{LibreMetaverse.HttpCapsClient.ProgressReport})":
        "self.native_update_material_inventory(material, material_item_id, None, cancellation_token, progress).await",
    "M:LibreMetaverse.InventoryManager.RequestUpdateMaterialTaskInventoryAsync(LibreMetaverse.Assets.AssetMaterial,LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken,System.IProgress{LibreMetaverse.HttpCapsClient.ProgressReport})":
        "self.native_update_material_inventory(material, material_item_id, Some(task_id), cancellation_token, progress).await",
    "P:LibreMetaverse.InventoryAISClient.IsAvailable": "self.native_is_available()",
    "M:LibreMetaverse.InventoryAISClient.CreateInventoryAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Boolean,System.Threading.CancellationToken)":
        "self.native_create_inventory(parent_uuid, new_inventory, create_link, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.SlamFolderAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
        "self.native_slam_folder(folder_uuid, new_inventory, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.RemoveCategoryAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_remove_category(category_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.RemoveItemAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_remove_item(item_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.CopyLibraryCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Threading.CancellationToken)":
        "self.native_copy_library_category(source_uuid, dest_uuid, copy_subfolders, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.PurgeDescendentsAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_purge_descendents(category_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.UpdateCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
        "self.native_update_category(category_uuid, updates, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.UpdateItemAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
        "self.native_update_item(item_uuid, updates, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.CopyCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Threading.CancellationToken)":
        "self.native_copy_category(source_uuid, dest_uuid, simulate, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.MoveCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_category(source_uuid, dest_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.PutCategoryChildrenAsync(System.String,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
        "self.native_put_category_children(category, children_payload, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.CopyCategoryChildrenAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_copy_category_children(category, dest_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.MoveCategoryChildrenAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_category_children(category, dest_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.DeleteCategoryChildrenAsync(System.String,System.Threading.CancellationToken)":
        "self.native_delete_category_children(category, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.PutCategoryLinksAsync(System.String,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
        "self.native_put_category_links(category, links_payload, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.CopyCategoryLinksAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_copy_category_links(category, dest_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.MoveCategoryLinksAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_category_links(category, dest_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.DeleteCategoryLinksAsync(System.String,System.Threading.CancellationToken)":
        "self.native_delete_category_links(category, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.CopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_copy_item(item_uuid, dest_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.MoveItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_item(item_uuid, dest_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.GetCategoryAsync(System.String,System.Threading.CancellationToken)":
        "self.native_get_category(category, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.GetCategoryChildrenAsync(System.String,System.Int32,System.Boolean,System.Threading.CancellationToken)":
        "self.native_get_category_children(category, depth, recursive, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.FetchCategoryCategoriesAsync(LibreMetaverse.UUID,System.Boolean,System.Boolean,System.Int32,System.Threading.CancellationToken)":
        "self.native_fetch_category_categories(cat_id, use_inventory_cap, recursive, depth, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.FetchCategorySubsetAsync(LibreMetaverse.UUID,System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Boolean,System.Boolean,System.Int32,System.Threading.CancellationToken)":
        "self.native_fetch_category_subset(cat_id, specific_children, use_inventory_cap, recursive, depth, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.GetCategoryLinksAsync(System.String,System.Threading.CancellationToken)":
        "self.native_get_category_links(category, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.FetchItemAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_fetch_item(item_uuid, cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.FetchCOFAsync(System.Threading.CancellationToken)":
        "self.native_fetch_cof(cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.FetchOrphansAsync(System.Threading.CancellationToken)":
        "self.native_fetch_orphans(cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.EmptyTrashAsync(System.Threading.CancellationToken)":
        "self.native_empty_trash(cancellation_token).await",
    "M:LibreMetaverse.InventoryAISClient.ParseItemsFromEmbedded(LibreMetaverse.StructuredData.OSDMap)":
        "self.native_parse_items_from_embedded(response)",
    "M:LibreMetaverse.InventoryAISClient.ParseFoldersFromEmbedded(LibreMetaverse.StructuredData.OSDMap)":
        "self.native_parse_folders_from_embedded(response)",
    "M:LibreMetaverse.InventoryAISClient.ParseLinksFromEmbedded(LibreMetaverse.StructuredData.OSDMap)":
        "self.native_parse_links_from_embedded(response)",
    "M:LibreMetaverse.InventoryAISClient.ParseEmbedded(LibreMetaverse.StructuredData.OSDMap,System.Collections.Generic.List{LibreMetaverse.InventoryFolder}@,System.Collections.Generic.List{LibreMetaverse.InventoryItem}@,System.Collections.Generic.List{LibreMetaverse.InventoryItem}@)":
        "self.native_parse_embedded(response, folders, items, links)",
    "M:LibreMetaverse.InventoryAISClient.ParseAISResponseMeta(LibreMetaverse.StructuredData.OSDMap)":
        "crate::inventory_ais::InventoryAISClient::native_parse_ais_response_meta(response)",
    "M:LibreMetaverse.InventoryManager.CreateInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID)":
        "crate::inventory_manager::InventoryManager::native_create_inventory_item(type_, id)",
    "M:LibreMetaverse.InventoryManager.CopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_copy_item(item, new_parent, new_name, old_owner_id, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.CopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_copy_item_default_owner(item, new_parent, new_name, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.CopyScriptToTask(System.UInt32,LibreMetaverse.InventoryItem,System.Boolean,LibreMetaverse.Simulator)":
        "self.native_copy_script_to_task(object_local_id, item, enable_script, simulator)",
    "M:LibreMetaverse.InventoryManager.CreateFolder(LibreMetaverse.UUID,System.String)":
        "self.native_create_folder(parent_id, name, libremetaverse_types::FolderType::None)",
    "M:LibreMetaverse.InventoryManager.CreateFolder(LibreMetaverse.UUID,System.String,LibreMetaverse.FolderType)":
        "self.native_create_folder(parent_id, name, preferred_type)",
    "M:LibreMetaverse.InventoryManager.CreateItemAsync(LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.AssetType,LibreMetaverse.UUID,LibreMetaverse.InventoryType,LibreMetaverse.PermissionMask,System.Threading.CancellationToken)":
        "self.native_create_item(parent_folder, name, description, type_, asset_transaction_id, inv_type, libremetaverse_types::WearableType::Shape, next_owner_mask, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.CreateItemAsync(LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.AssetType,LibreMetaverse.UUID,LibreMetaverse.InventoryType,LibreMetaverse.WearableType,LibreMetaverse.PermissionMask,System.Threading.CancellationToken)":
        "self.native_create_item(parent_folder, name, description, type_, asset_transaction_id, inv_type, wearable_type, next_owner_mask, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.CreateLinkAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.InventoryType,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_create_link(folder_id, item_id, name, description, inv_type, transaction_id, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.CreateLinksAsync(LibreMetaverse.UUID,System.Collections.Generic.IEnumerable{System.ValueTuple{LibreMetaverse.InventoryBase,System.String}},System.Action{System.Boolean},System.Threading.CancellationToken)":
        "self.native_create_links(folder_id, links_to_create, callback, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.CreateOrRetrieveInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID)":
        "self.native_create_or_retrieve_inventory_item(inv_type, item_id)",
    "M:LibreMetaverse.InventoryManager.DecryptShadowID(LibreMetaverse.UUID)":
        "crate::inventory_manager::InventoryManager::native_decrypt_shadow_id(shadow_id)",
    "M:LibreMetaverse.InventoryManager.Dispose":
        "self.native_dispose()",
    "M:LibreMetaverse.InventoryManager.EncryptAssetID(LibreMetaverse.UUID)":
        "crate::inventory_manager::InventoryManager::native_encrypt_asset_id(asset_id)",
    "M:LibreMetaverse.InventoryManager.EmptyFolder(LibreMetaverse.UUID)":
        "self.native_empty_folder(folder_id)",
    "M:LibreMetaverse.InventoryManager.EmptyLostAndFoundAsync(System.Threading.CancellationToken)":
        "self.native_empty_system_folder(libremetaverse_types::FolderType::LostAndFound, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.EmptyTrashAsync(System.Threading.CancellationToken)":
        "self.native_empty_system_folder(libremetaverse_types::FolderType::Trash, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.FetchItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_fetch_item(item_id, owner_id, cancellation_token, false).await",
    "M:LibreMetaverse.InventoryManager.FetchItemHttpAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_fetch_item(item_id, owner_id, token, true).await",
    "M:LibreMetaverse.InventoryManager.FindFolderForType(LibreMetaverse.AssetType)":
        "Ok(self.native_find_folder_for_asset_type(type_))",
    "M:LibreMetaverse.InventoryManager.FindFolderForType(LibreMetaverse.FolderType)":
        "Ok(self.native_find_folder_for_type(type_))",
    "M:LibreMetaverse.InventoryManager.FindObjectByPathAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_find_object_by_path(base_folder, inventory_owner, path, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.FolderContentsAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken,System.Boolean)":
        "self.native_folder_contents(folder, owner, fetch_folders, fetch_items, order, cancellation_token, follow_links.unwrap_or(false)).await",
    "M:LibreMetaverse.InventoryManager.GetInventoryRecursiveAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.InventoryFolder},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)":
        "self.native_get_inventory_recursive(folder_id, owner, cats, items, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.GetTaskInventoryAsync(LibreMetaverse.UUID,System.UInt32,LibreMetaverse.Simulator,System.Threading.CancellationToken)":
        "self.native_get_task_inventory(object_id, object_local_id, simulator, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.GiveFolderAsync(LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,System.Boolean,System.Threading.CancellationToken)":
        "self.native_give_folder(folder_id, folder_name, recipient, do_effect, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.GiveItem(LibreMetaverse.UUID,System.String,LibreMetaverse.AssetType,LibreMetaverse.UUID,System.Boolean)":
        "self.native_give_item(item_id, item_name, asset_type, recipient, do_effect)",
    "M:LibreMetaverse.InventoryManager.ItemCRC(LibreMetaverse.InventoryItem)":
        "crate::inventory_manager::InventoryManager::native_item_crc(&iitem)",
    "M:LibreMetaverse.InventoryManager.ParseTaskInventory(System.String)":
        "crate::inventory_manager::InventoryManager::native_parse_task_inventory(task_data)",
    "M:LibreMetaverse.InventoryManager.LocalFind(LibreMetaverse.UUID,System.String[],System.Int32,System.Boolean)":
        "self.native_local_find(base_folder, path, level, first_only)",
    "M:LibreMetaverse.InventoryManager.Move(LibreMetaverse.InventoryBase,LibreMetaverse.InventoryFolder)":
        "self.native_move_object(item, new_parent)",
    "M:LibreMetaverse.InventoryManager.MoveFolder(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_folders(std::collections::HashMap::from([(folder_id, new_parent_id)]), cancellation_token)",
    "M:LibreMetaverse.InventoryManager.MoveFolderAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_folders_async(std::collections::HashMap::from([(folder_id, new_parent_id)]), cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.MoveFolders(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_move_folders(folders_new_parents, cancellation_token)",
    "M:LibreMetaverse.InventoryManager.MoveFoldersAsync(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_move_folders_async(folders_new_parents, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.MoveItem(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_move_items(std::collections::HashMap::from([(item_id, (folder_id, new_name))]), cancellation_token)",
    "M:LibreMetaverse.InventoryManager.MoveItem(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_items(std::collections::HashMap::from([(item_id, (folder_id, String::new()))]), cancellation_token)",
    "M:LibreMetaverse.InventoryManager.MoveItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_move_items_async(std::collections::HashMap::from([(item_id, (folder_id, new_name))]), cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.MoveItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_move_items_async(std::collections::HashMap::from([(item_id, (folder_id, String::new()))]), cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.MoveItems(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_move_items(items_new_folders.into_iter().map(|(item, folder)| (item, (folder, String::new()))).collect(), cancellation_token)",
    "M:LibreMetaverse.InventoryManager.MoveItemsAsync(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_move_items_async(items_new_folders.into_iter().map(|(item, folder)| (item, (folder, String::new()))).collect(), cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.MoveTaskInventory(System.UInt32,LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Simulator)":
        "self.native_move_task_inventory(object_local_id, task_item_id, inventory_folder_id, simulator)",
    "M:LibreMetaverse.InventoryManager.RemoveDescendantsAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_remove_descendants(folder, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RemoveFolderAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_remove_inventory_objects(Vec::new(), vec![folder], cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RemoveItemAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_remove_inventory_objects(vec![item], Vec::new(), cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RemoveItemsAsync(System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_remove_inventory_objects(items.collect(), Vec::new(), cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RemoveTaskInventory(System.UInt32,LibreMetaverse.UUID,LibreMetaverse.Simulator)":
        "self.native_remove_task_inventory(object_local_id, task_item_id, simulator)",
    "M:LibreMetaverse.InventoryManager.RequestCopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_copy_item(item, new_parent, new_name, old_owner_id, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestCopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_copy_item_default_owner(item, new_parent, new_name, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestCopyItemFromNotecardAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken,System.IProgress{LibreMetaverse.HttpCapsClient.ProgressReport})":
        "self.native_copy_item_from_notecard(object_id, notecard_id, folder_id, item_id, cancellation_token, progress).await",
    "M:LibreMetaverse.InventoryManager.RequestCopyItemsAsync(System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{System.String},LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_copy_items(items, target_folders, new_names, old_owner_id, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestCopyItemsWithResultAsync(System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{System.String},LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_copy_items(items, target_folders, new_names, old_owner_id, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestDeRezToInventory(System.UInt32)":
        "self.native_de_rez_to_objects_folder(object_local_id)",
    "M:LibreMetaverse.InventoryManager.RequestDeRezToInventory(System.UInt32,LibreMetaverse.DeRezDestination,LibreMetaverse.UUID,LibreMetaverse.UUID)":
        "self.native_de_rez_to_inventory(object_local_id, dest_type, dest_folder, transaction_id)",
    "M:LibreMetaverse.InventoryManager.RequestFetchInventory(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_request_fetch_inventory(std::collections::HashMap::from([(item_id, owner_id)]), cancellation_token)",
    "M:LibreMetaverse.InventoryManager.RequestFetchInventory(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_request_fetch_inventory(items, cancellation_token)",
    "M:LibreMetaverse.InventoryManager.RequestFetchInventoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_request_fetch_inventory_async(std::collections::HashMap::from([(item_id, owner_id)]), cancellation_token, None).await",
    "M:LibreMetaverse.InventoryManager.RequestFetchInventoryAsync(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken,System.Action{System.Collections.Generic.List{LibreMetaverse.InventoryItem}})":
        "self.native_request_fetch_inventory_async(items, cancellation_token, callback).await",
    "M:LibreMetaverse.InventoryManager.RequestFindObjectByPathAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_find_object_by_path(base_folder, inventory_owner, path, cancellation_token).await.map(|_| ())",
    "M:LibreMetaverse.InventoryManager.RequestFolderContentsAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken)":
        "self.native_request_folder_contents(folder_id, owner_id, fetch_folders, fetch_items, order, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestFolderContentsAsync(System.Collections.Generic.List{LibreMetaverse.InventoryFolder},System.Uri,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken)":
        "self.native_request_folder_contents_batch(batch, capability_uri, fetch_folders, fetch_items, order, cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestFolderUpdateAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken)":
        "self.native_request_folder_update(folder_id, owner_id, fetch_folders.unwrap_or(true), fetch_items.unwrap_or(true), order.unwrap_or(crate::InventorySortOrder::BY_NAME), cancellation_token).await",
    "M:LibreMetaverse.InventoryManager.RequestGetScriptRunning(LibreMetaverse.UUID,LibreMetaverse.UUID)":
        "self.native_request_get_script_running(object_id, script_id)",
    "M:LibreMetaverse.InventoryManager.RequestRestoreRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.InventoryItem,LibreMetaverse.UUID)":
        "self.native_restore_rez_from_inventory(simulator, item, query_id)",
    "M:LibreMetaverse.InventoryManager.RequestRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.InventoryItem)":
        "self.native_rez_from_inventory_default(simulator, rotation, position, item, None)",
    "M:LibreMetaverse.InventoryManager.RequestRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.InventoryItem,LibreMetaverse.UUID)":
        "self.native_rez_from_inventory_default(simulator, rotation, position, item, Some(group_owner))",
    "M:LibreMetaverse.InventoryManager.RequestRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.UUID,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.InventoryItem,LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
        "self.native_rez_from_inventory(simulator, task_id, rotation, position, item, group_owner, query_id, rez_selected)",
    "M:LibreMetaverse.InventoryManager.RequestSetScriptRunning(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
        "self.native_request_set_script_running(object_id, script_id, running)",
    "M:LibreMetaverse.InventoryManager.RequestTaskInventory(System.UInt32)":
        "self.native_request_task_inventory(object_local_id, None)",
    "M:LibreMetaverse.InventoryManager.RequestTaskInventory(System.UInt32,LibreMetaverse.Simulator)":
        "self.native_request_task_inventory(object_local_id, simulator)",
    "M:LibreMetaverse.InventoryManager.RequestUpdateItem(LibreMetaverse.InventoryItem)":
        "self.native_request_update_items(vec![item], libremetaverse_types::UUID::random()?)",
    "M:LibreMetaverse.InventoryManager.RequestUpdateItems(System.Collections.Generic.List{LibreMetaverse.InventoryItem})":
        "self.native_request_update_items(items, libremetaverse_types::UUID::random()?)",
    "M:LibreMetaverse.InventoryManager.RequestUpdateItems(System.Collections.Generic.List{LibreMetaverse.InventoryItem},LibreMetaverse.UUID)":
        "self.native_request_update_items(items, transaction_id)",
    "M:LibreMetaverse.InventoryManager.UpdateFolderProperties(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,LibreMetaverse.FolderType)":
        "self.native_update_folder_properties(folder_id, parent_id, name, type_)",
    "M:LibreMetaverse.InventoryManager.UpdateTaskInventory(System.UInt32,LibreMetaverse.InventoryItem,LibreMetaverse.Simulator,System.Boolean)":
        "self.native_update_task_inventory(object_local_id, item, simulator, only_mod_meta.unwrap_or(true))",
    "M:LibreMetaverse.InventoryManager.WaitForNextInventoryOfferAsync(System.Threading.CancellationToken)":
        "self.native_wait_for_next_inventory_offer(cancellation_token).await",
    "P:LibreMetaverse.InventoryManager.NoResults":
        "crate::inventory_manager::InventoryManager::native_no_results()",
    "P:LibreMetaverse.InventoryManager.Store":
        "self.native_store()",
    "E:LibreMetaverse.AgentManager.IM":
        "self.native_subscribe_im(handler)",
    "E:LibreMetaverse.AgentManager.AgentDataReply":
        "self.native_subscribe_agent_data_reply(handler)",
    "E:LibreMetaverse.AgentManager.AnimationsChanged":
        "self.native_subscribe_animations_changed(handler)",
    "E:LibreMetaverse.AgentManager.AvatarSitResponse":
        "self.native_subscribe_avatar_sit_response(handler)",
    "E:LibreMetaverse.AgentManager.CameraConstraint":
        "self.native_subscribe_camera_constraint(handler)",
    "E:LibreMetaverse.AgentManager.ChatFromSimulator":
        "self.native_subscribe_chat_from_simulator(handler)",
    "E:LibreMetaverse.AgentManager.MoneyBalance":
        "self.native_subscribe_money_balance(handler)",
    "E:LibreMetaverse.AgentManager.MoneyBalanceReply":
        "self.native_subscribe_money_balance_reply(handler)",
    "E:LibreMetaverse.AgentManager.AgentExperiencesUpdated":
        "self.native_subscribe_agent_experiences_updated(handler)",
    "E:LibreMetaverse.AgentManager.ExperiencePreferencesUpdated":
        "self.native_subscribe_experience_preferences_updated(handler)",
    "E:LibreMetaverse.AgentManager.RegionExperiencesUpdated":
        "self.native_subscribe_region_experiences_updated(handler)",
    "E:LibreMetaverse.AgentManager.ExperienceInfoReceived":
        "self.native_subscribe_experience_info_received(handler)",
    "E:LibreMetaverse.AgentManager.AgentPreferencesUpdated":
        "self.native_subscribe_agent_preferences_updated(handler)",
    "E:LibreMetaverse.AgentManager.AvatarRenderInfoUpdated":
        "self.native_subscribe_avatar_render_info_updated(handler)",
    "E:LibreMetaverse.AgentManager.ViewerBenefitsUpdated":
        "self.native_subscribe_viewer_benefits_updated(handler)",
    "E:LibreMetaverse.AgentManager.ProductInfoUpdated":
        "self.native_subscribe_product_info_updated(handler)",
    "E:LibreMetaverse.AgentManager.RegionCrossed":
        "self.native_subscribe_region_crossed(handler)",
    "E:LibreMetaverse.AgentManager.RegionCrossingPredicted":
        "self.native_subscribe_region_crossing_predicted(handler)",
    "E:LibreMetaverse.AgentManager.MuteListUpdated":
        "self.native_subscribe_mute_list_updated(handler)",
    "E:LibreMetaverse.AgentManager.GroupChatJoined":
        "self.native_subscribe_group_chat_joined(handler)",
    "E:LibreMetaverse.AgentManager.ChatSessionMemberAdded":
        "self.native_subscribe_chat_session_member_added(handler)",
    "E:LibreMetaverse.AgentManager.ChatSessionMemberLeft":
        "self.native_subscribe_chat_session_member_left(handler)",
    "E:LibreMetaverse.AgentManager.SetDisplayNameReply":
        "self.native_subscribe_set_display_name_reply(handler)",
    "E:LibreMetaverse.AgentManager.NavMeshStatusUpdate":
        "self.native_subscribe_nav_mesh_status_update(handler)",
    "E:LibreMetaverse.AgentManager.TeleportProgress":
        "self.native_subscribe_teleport_progress(handler)",
    "M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient)":
        "crate::agent_manager::AgentManager::native_new(client)",
    "M:LibreMetaverse.AgentManager.Dispose":
        "self.native_dispose()",
    "M:LibreMetaverse.AgentManager.ActivateGesture(LibreMetaverse.UUID,LibreMetaverse.UUID)":
        "self.native_activate_gesture(inv_id, asset_id)",
    "M:LibreMetaverse.AgentManager.Animate(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,System.Boolean},System.Boolean)":
        "self.native_animate(animations, reliable)",
    "M:LibreMetaverse.AgentManager.AnimationStart(LibreMetaverse.UUID,System.Boolean)":
        "self.native_animation_start(animation, reliable)",
    "M:LibreMetaverse.AgentManager.AnimationStop(LibreMetaverse.UUID,System.Boolean)":
        "self.native_animation_stop(animation, reliable)",
    "M:LibreMetaverse.AgentManager.AutoPilot(System.Double,System.Double,System.Double)":
        "self.native_autopilot_f64(global_x, global_y, z)",
    "M:LibreMetaverse.AgentManager.AutoPilot(System.UInt64,System.UInt64,System.Single)":
        "self.native_autopilot_u64(global_x, global_y, z)",
    "M:LibreMetaverse.AgentManager.AutoPilotCancel":
        "self.native_autopilot_cancel()",
    "M:LibreMetaverse.AgentManager.AutoPilotLocal(System.Int32,System.Int32,System.Single)":
        "self.native_autopilot_local(local_x, local_y, z)",
    "M:LibreMetaverse.AgentManager.CancelCrossing":
        "Ok(self.native_cancel_crossing())",
    "M:LibreMetaverse.AgentManager.BeamEffect(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Vector3d,LibreMetaverse.Color4,System.Single,LibreMetaverse.UUID)":
        "self.native_viewer_effect(source_avatar, target_object, global_offset, color, duration, effect_id, crate::EffectType::Beam, None)",
    "M:LibreMetaverse.AgentManager.Chat(System.String,System.Int32,LibreMetaverse.ChatType,System.Boolean)":
        "self.native_chat(message, channel, type_, split_large_messages)",
    "M:LibreMetaverse.AgentManager.ChatterBoxAcceptInviteAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_chatter_box_accept_invite(session_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.CompleteAgentMovement(LibreMetaverse.Simulator)":
        "self.native_complete_agent_movement(simulator)",
    "M:LibreMetaverse.AgentManager.Crouch(System.Boolean)":
        "self.native_crouch(crouching)",
    "M:LibreMetaverse.AgentManager.DeactivateGesture(LibreMetaverse.UUID)":
        "self.native_deactivate_gesture(inv_id)",
    "M:LibreMetaverse.AgentManager.DeleteClassified(LibreMetaverse.UUID)":
        "self.native_delete_classified(classified_id)",
    "M:LibreMetaverse.AgentManager.FindExperienceByNameAsync(System.String,System.Int32,System.Int32,System.Threading.CancellationToken)":
        "self.native_find_experience_by_name(query, page, page_size, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.Fly(System.Boolean)":
        "self.native_fly(start)",
    "M:LibreMetaverse.AgentManager.ForgetExperiencePermissionAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_forget_experience_permission(experience_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetAdminExperiencesAsync(System.Threading.CancellationToken)":
        "self.native_get_admin_experiences(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetAgentExperiencePermissionsAsync(System.Threading.CancellationToken)":
        "self.native_get_agent_experience_permissions(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetAgentExperiencesAsync(System.Threading.CancellationToken)":
        "self.native_get_agent_experiences(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetAgentPreferencesAsync(System.Threading.CancellationToken)":
        "self.native_get_agent_preferences(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetAttachmentResourcesAsync(System.Threading.CancellationToken)":
        "self.native_get_attachment_resources(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetAvatarRenderInfoAsync(System.Threading.CancellationToken)":
        "self.native_get_avatar_render_info(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetCreatorExperiencesAsync(System.Threading.CancellationToken)":
        "self.native_get_creator_experiences(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetCrossingDetails":
        "Ok(self.native_crossing_details())",
    "M:LibreMetaverse.AgentManager.GetCrossingFailureReason":
        "Ok(self.native_crossing_failure_reason())",
    "M:LibreMetaverse.AgentManager.GetCrossingState":
        "Ok(self.native_crossing_state())",
    "M:LibreMetaverse.AgentManager.GetSimulatorsForObject(LibreMetaverse.UUID)":
        "Ok(self.native_get_simulators_for_object(object_id))",
    "M:LibreMetaverse.AgentManager.GetExperienceInfoAsync(System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_get_experience_info(experience_ids, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetExperiencePermissionAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_get_experience_permission(experience_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetExperiencePreferencesAsync(System.Threading.CancellationToken)":
        "self.native_get_experience_preferences(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetGroupExperiencesAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_get_group_experiences(group_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetProductInfoAsync(System.Threading.CancellationToken)":
        "self.native_get_product_info(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetRegionExperiencesAsync(System.Threading.CancellationToken)":
        "self.native_get_region_experiences(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GetViewerBenefitsAsync(System.Threading.CancellationToken)":
        "self.native_get_viewer_benefits(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.GoHomeAsync(System.Threading.CancellationToken)":
        "self.native_teleport_landmark(libremetaverse_types::UUID::zero(), cancellation_token).await",
    "M:LibreMetaverse.AgentManager.IsCrossing":
        "Ok(self.native_is_crossing())",
    "M:LibreMetaverse.AgentManager.IsNearBorder(LibreMetaverse.Vector3,System.UInt32,System.UInt32,System.Single)":
        "Ok(self.native_is_near_border(position, region_size_x, region_size_y, threshold.unwrap_or(32.0)))",
    "M:LibreMetaverse.AgentManager.GiveAvatarMoney(LibreMetaverse.UUID,System.Int32)":
        "self.native_give_avatar_money(target, amount, String::new())",
    "M:LibreMetaverse.AgentManager.GiveAvatarMoney(LibreMetaverse.UUID,System.Int32,System.String)":
        "self.native_give_avatar_money(target, amount, description)",
    "M:LibreMetaverse.AgentManager.GiveGroupMoney(LibreMetaverse.UUID,System.Int32)":
        "self.native_give_group_money(target, amount, String::new())",
    "M:LibreMetaverse.AgentManager.GiveGroupMoney(LibreMetaverse.UUID,System.Int32,System.String)":
        "self.native_give_group_money(target, amount, description)",
    "M:LibreMetaverse.AgentManager.GiveMoney(LibreMetaverse.UUID,System.Int32,System.String,LibreMetaverse.MoneyTransactionType,LibreMetaverse.TransactionFlags)":
        "self.native_give_money(target, amount, description, type_, flags)",
    "M:LibreMetaverse.AgentManager.GiveObjectMoney(LibreMetaverse.UUID,System.Int32,System.String)":
        "self.native_give_object_money(target, amount, object_name)",
    "M:LibreMetaverse.AgentManager.GroupInviteRespond(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
        "self.native_group_invite_respond(group_id, im_session_id, accept)",
    "M:LibreMetaverse.AgentManager.InstantMessage(LibreMetaverse.UUID,System.String)":
        "self.native_instant_message(target, message, None)",
    "M:LibreMetaverse.AgentManager.InstantMessage(LibreMetaverse.UUID,System.String,LibreMetaverse.UUID)":
        "self.native_instant_message(target, message, Some(im_session_id))",
    "M:LibreMetaverse.AgentManager.InstantMessage(System.String,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,LibreMetaverse.InstantMessageDialog,LibreMetaverse.InstantMessageOnline,LibreMetaverse.Vector3,LibreMetaverse.UUID,System.Byte[])":
        "self.native_instant_message_full(from_name, target, message, im_session_id, dialog, offline, position, region_id, binary_bucket)",
    "M:LibreMetaverse.AgentManager.InstantMessage(System.String,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,LibreMetaverse.UUID[])":
        "self.native_instant_message_conference(from_name, target, message, im_session_id, conference_i_ds)",
    "M:LibreMetaverse.AgentManager.InstantMessageGroup(LibreMetaverse.UUID,System.String)":
        "self.native_instant_message_group(None, group_id, message)",
    "M:LibreMetaverse.AgentManager.InstantMessageGroup(System.String,LibreMetaverse.UUID,System.String)":
        "self.native_instant_message_group(Some(from_name), group_id, message)",
    "M:LibreMetaverse.AgentManager.IsExperienceAdminAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_is_experience_role(\"IsExperienceAdmin\", experience_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.IsExperienceContributorAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_is_experience_role(\"IsExperienceContributor\", experience_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.IsGroupMessage(LibreMetaverse.InstantMessage)":
        "Ok(self.native_is_group_message(message))",
    "M:LibreMetaverse.AgentManager.Jump(System.Boolean)":
        "self.native_jump(jumping)",
    "M:LibreMetaverse.AgentManager.LookAtEffect(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Vector3d,LibreMetaverse.LookAtType,LibreMetaverse.UUID)":
        "self.native_look_at_effect(source_avatar, target_object, global_offset, type_, effect_id)",
    "M:LibreMetaverse.AgentManager.ModerateChatSessions(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Boolean,System.Threading.CancellationToken)":
        "self.native_moderate_chat_sessions(session_id, member_id, key, moderate, cancellation_token)",
    "M:LibreMetaverse.AgentManager.PayUploadFee":
        "self.native_pay_upload_fee(None, String::new())",
    "M:LibreMetaverse.AgentManager.PayUploadFee(System.Int32)":
        "self.native_pay_upload_fee(Some(amount), String::new())",
    "M:LibreMetaverse.AgentManager.PayUploadFee(System.String)":
        "self.native_pay_upload_fee(None, description)",
    "M:LibreMetaverse.AgentManager.PickDelete(LibreMetaverse.UUID)":
        "self.native_pick_delete(pick_id)",
    "M:LibreMetaverse.AgentManager.PickInfoUpdate(LibreMetaverse.UUID,System.Boolean,LibreMetaverse.UUID,System.String,LibreMetaverse.Vector3d,LibreMetaverse.UUID,System.String)":
        "self.native_pick_info_update(pick_id, top_pick, parcel_id, name, global_position, texture_id, description)",
    "M:LibreMetaverse.AgentManager.PlayGestureAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_play_gesture(gesture_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.PointAtEffect(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Vector3d,LibreMetaverse.PointAtType,LibreMetaverse.UUID)":
        "self.native_point_at_effect(source_avatar, target_object, global_offset, type_, effect_id)",
    "M:LibreMetaverse.AgentManager.PostAvatarRenderInfoAsync(System.Collections.Generic.IReadOnlyDictionary{LibreMetaverse.UUID,System.ValueTuple{System.Int32,System.Boolean}},System.Threading.CancellationToken)":
        "self.native_post_avatar_render_info(agents, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.PostAvatarRenderInfoAsync(System.Int32,System.Boolean,System.Threading.CancellationToken)":
        "self.native_post_local_avatar_render_info(weight, too_complex, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.ReplyToScriptDialog(System.Int32,System.Int32,System.String,LibreMetaverse.UUID)":
        "self.native_reply_to_script_dialog(channel, button_index, button_label, object_id)",
    "M:LibreMetaverse.AgentManager.RequestBalance":
        "self.native_request_balance()",
    "M:LibreMetaverse.AgentManager.RequestJoinGroupChat(LibreMetaverse.UUID)":
        "self.native_join_group_chat(group_id)",
    "M:LibreMetaverse.AgentManager.RequestLeaveGroupChat(LibreMetaverse.UUID)":
        "self.native_leave_group_chat(group_id)",
    "M:LibreMetaverse.AgentManager.RequestMuteList":
        "self.native_request_mute_list()",
    "M:LibreMetaverse.AgentManager.RequestSit(LibreMetaverse.UUID,LibreMetaverse.Vector3)":
        "self.native_request_sit(target_id, offset)",
    "M:LibreMetaverse.AgentManager.RequestTeleport(LibreMetaverse.UUID)":
        "self.native_request_teleport_landmark(landmark)",
    "M:LibreMetaverse.AgentManager.RequestTeleport(System.UInt64,LibreMetaverse.Vector3)":
        "self.native_request_teleport_location(region_handle, position, libremetaverse_types::Vector3::unit_y(), Some(false))",
    "M:LibreMetaverse.AgentManager.RequestTeleport(System.UInt64,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Boolean)":
        "self.native_request_teleport_location(region_handle, position, look_at, ignore_caps_status)",
    "M:LibreMetaverse.AgentManager.RequestNavMeshGenerationStatusAsync(System.Threading.CancellationToken)":
        "self.native_request_nav_mesh_generation_status(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.RequestNavMeshRebakeAsync(System.Threading.CancellationToken)":
        "self.native_request_nav_mesh_rebake(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.RemoveMuteListEntry(LibreMetaverse.UUID,System.String)":
        "self.native_remove_mute_list_entry(id, name)",
    "M:LibreMetaverse.AgentManager.RetrieveInstantMessagesAsync(System.Threading.CancellationToken)":
        "self.native_retrieve_instant_messages(cancellation_token).await",
    "M:LibreMetaverse.AgentManager.QueryExperiencesOnParcelAsync(System.Int32,System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Threading.CancellationToken)":
        "self.native_query_experiences_on_parcel(parcel_local_id, experience_ids, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SendPostcardAsync(System.Byte[],System.String,System.String,System.String,System.String,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
        "self.native_send_postcard(jpeg_image_data, to_email, from_name, subject, message, global_position, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SendViewerStatsAsync(LibreMetaverse.Messages.Linden.ViewerStatsMessage,System.Threading.CancellationToken)":
        "self.native_send_viewer_stats(stats, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SendTeleportLure(LibreMetaverse.UUID)":
        "self.native_send_teleport_lure(target_id, None)",
    "M:LibreMetaverse.AgentManager.SendTeleportLure(LibreMetaverse.UUID,System.String)":
        "self.native_send_teleport_lure(target_id, Some(message))",
    "M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID)":
        "self.native_send_teleport_lure_request(target_id, target_id, \"Let me join you in your location\".into())",
    "M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String)":
        "self.native_send_teleport_lure_request(target_id, session_id, message)",
    "M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID,System.String)":
        "self.native_send_teleport_lure_request(target_id, target_id, message)",
    "M:LibreMetaverse.AgentManager.SetAgentAccessAsync(System.String,System.Threading.CancellationToken)":
        "self.native_set_agent_access_async(access, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SetDisplayNameAsync(System.String,System.String,System.Threading.CancellationToken)":
        "self.native_set_display_name(old_name, new_name, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SetExperiencePermissionAsync(LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_set_experience_permission(experience_id, permission, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SetExperiencePreferencesAsync(LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage,System.Threading.CancellationToken)":
        "self.native_set_experience_preferences_async(preferences, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.UpdateExperienceAsync(LibreMetaverse.Messages.Linden.ExperienceInfo,System.Threading.CancellationToken)":
        "self.native_update_experience(info, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SphereEffect(LibreMetaverse.Vector3d,LibreMetaverse.Color4,System.Single,LibreMetaverse.UUID)":
        "self.native_viewer_effect(libremetaverse_types::UUID::zero(), libremetaverse_types::UUID::zero(), global_offset, color, duration, effect_id, crate::EffectType::Sphere, None)",
    "M:LibreMetaverse.AgentManager.StartIMConferenceAsync(System.Collections.Generic.List{LibreMetaverse.UUID},LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_start_im_conference(participants, tmp_session_id, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.SetHoverHeightAsync(System.Double,System.Threading.CancellationToken)":
        "self.native_set_hover_height_async(hover_height, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.Sit":
        "self.native_sit()",
    "M:LibreMetaverse.AgentManager.SitOnGround":
        "self.native_sit_on_ground()",
    "M:LibreMetaverse.AgentManager.Stand":
        "self.native_stand()",
    "M:LibreMetaverse.AgentManager.TeleportAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
        "self.native_teleport_landmark(landmark, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.TeleportAsync(System.String,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
        "self.native_teleport_name(sim_name, position, look_at, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.TeleportAsync(System.String,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
        "self.native_teleport_name(sim_name, position, libremetaverse_types::Vector3::unit_y(), cancellation_token).await",
    "M:LibreMetaverse.AgentManager.TeleportAsync(System.UInt64,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
        "self.native_teleport_location(region_handle, position, look_at, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.TeleportAsync(System.UInt64,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
        "self.native_teleport_location(region_handle, position, libremetaverse_types::Vector3::unit_y(), cancellation_token).await",
    "M:LibreMetaverse.AgentManager.TeleportFailedEventHandler(System.String,LibreMetaverse.Interfaces.IMessage,LibreMetaverse.Simulator)":
        "self.native_movement_runtime().handle_caps_event(\"TeleportFailed\", message.as_ref(), simulator).map(|_| ())",
    "M:LibreMetaverse.AgentManager.TeleportLureRespond(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
        "self.native_teleport_lure_respond(requester_id, session_id, accept)",
    "M:LibreMetaverse.AgentManager.TrackObjectInSimulator(LibreMetaverse.UUID,LibreMetaverse.Simulator)":
        "Ok(self.native_track_object_in_simulator(object_id, sim))",
    "M:LibreMetaverse.AgentManager.UntrackObjectInSimulator(LibreMetaverse.UUID,LibreMetaverse.Simulator)":
        "Ok(self.native_untrack_object_in_simulator(object_id, &sim))",
    "M:LibreMetaverse.AgentManager.UpdateAgentLanguageAsync(System.String,System.Boolean,System.Threading.CancellationToken)":
        "self.native_update_agent_language(language, is_public, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.UpdateClassifiedInfo(LibreMetaverse.UUID,LibreMetaverse.DirectoryManager.ClassifiedCategories,LibreMetaverse.UUID,System.Int32,LibreMetaverse.Vector3d,System.String,System.String,System.Boolean)":
        "self.native_update_classified_info(classified_id, category, snapshot_id, price, position, name, desc, auto_renew)",
    "M:LibreMetaverse.AgentManager.UpdateClassifiedInfo(LibreMetaverse.UUID,LibreMetaverse.DirectoryManager.ClassifiedCategories,LibreMetaverse.UUID,System.Int32,System.String,System.String,System.Boolean)":
        "self.native_update_classified_info(classified_id, category, snapshot_id, price, libremetaverse_types::Vector3d::zero(), name, desc, auto_renew)",
    "M:LibreMetaverse.AgentManager.UpdateInterests(LibreMetaverse.Avatar.Interests)":
        "self.native_update_interests(interests)",
    "M:LibreMetaverse.AgentManager.UpdateMuteListEntry(LibreMetaverse.MuteType,LibreMetaverse.UUID,System.String)":
        "self.native_update_mute_list_entry(type_, id, name, crate::MuteFlags::DEFAULT)",
    "M:LibreMetaverse.AgentManager.UpdateMuteListEntry(LibreMetaverse.MuteType,LibreMetaverse.UUID,System.String,LibreMetaverse.MuteFlags)":
        "self.native_update_mute_list_entry(type_, id, name, flags)",
    "M:LibreMetaverse.AgentManager.UpdateProfile(LibreMetaverse.Avatar.AvatarProperties)":
        "self.native_update_profile(profile)",
    "M:LibreMetaverse.AgentManager.UpdateProfileAsync(LibreMetaverse.Avatar.AvatarProperties,System.Threading.CancellationToken)":
        "self.native_update_profile_async(profile, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.UpdateProfileNotes(LibreMetaverse.UUID,System.String)":
        "self.native_update_profile_notes(target, notes)",
    "M:LibreMetaverse.AgentManager.UpdateProfileNotesAsync(LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
        "self.native_update_profile_notes_async(target, notes, cancellation_token).await",
    "M:LibreMetaverse.AgentManager.UpdateProfileUdp(LibreMetaverse.Avatar.AvatarProperties)":
        "self.native_update_profile_udp(profile)",
    "P:LibreMetaverse.AgentManager.ActiveGestures":
        "self.native_active_gestures()",
    "P:LibreMetaverse.AgentManager.AgentExperienceList":
        "self.native_agent_experience_list()",
    "P:LibreMetaverse.AgentManager.AgentExperienceList#set":
        "self.native_set_agent_experience_list(value)",
    "P:LibreMetaverse.AgentManager.ExperiencePreferences":
        "self.native_experience_preferences()",
    "P:LibreMetaverse.AgentManager.ExperiencePreferences#set":
        "self.native_set_experience_preferences(value)",
    "P:LibreMetaverse.AgentManager.LastRegionExperiences":
        "self.native_last_region_experiences()",
    "P:LibreMetaverse.AgentManager.LastRegionExperiences#set":
        "self.native_set_last_region_experiences(value)",
    "P:LibreMetaverse.AgentManager.AvatarRenderInfo":
        "self.native_avatar_render_info()",
    "P:LibreMetaverse.AgentManager.AvatarRenderInfo#set":
        "self.native_set_avatar_render_info(value)",
    "P:LibreMetaverse.AgentManager.ViewerBenefits":
        "self.native_viewer_benefits()",
    "P:LibreMetaverse.AgentManager.ViewerBenefits#set":
        "self.native_set_viewer_benefits(value)",
    "P:LibreMetaverse.AgentManager.Benefits":
        "self.native_benefits()",
    "P:LibreMetaverse.AgentManager.Benefits#set":
        "self.native_set_benefits(value)",
    "P:LibreMetaverse.AgentManager.Name":
        "self.native_name()",
    "P:LibreMetaverse.AgentManager.ActiveGroup":
        "self.native_active_group()",
    "P:LibreMetaverse.AgentManager.ActiveGroup#set":
        "self.native_set_active_group(value)",
    "P:LibreMetaverse.AgentManager.ActiveGroupPowers":
        "self.native_active_group_powers()",
    "P:LibreMetaverse.AgentManager.ActiveGroupPowers#set":
        "self.native_set_active_group_powers(value)",
    "P:LibreMetaverse.AgentManager.FirstName":
        "self.native_first_name()",
    "P:LibreMetaverse.AgentManager.FirstName#set":
        "self.native_set_first_name(value)",
    "P:LibreMetaverse.AgentManager.LastName":
        "self.native_last_name()",
    "P:LibreMetaverse.AgentManager.LastName#set":
        "self.native_set_last_name(value)",
    "P:LibreMetaverse.AgentManager.AgentAccess":
        "self.native_agent_access()",
    "P:LibreMetaverse.AgentManager.AgentAccess#set":
        "self.native_set_agent_access(value)",
    "P:LibreMetaverse.AgentManager.HoverHeight":
        "self.native_hover_height()",
    "P:LibreMetaverse.AgentManager.HoverHeight#set":
        "self.native_set_hover_height(value)",
    "P:LibreMetaverse.AgentManager.ProductInfo":
        "self.native_product_info()",
    "P:LibreMetaverse.AgentManager.ProductInfo#set":
        "self.native_set_product_info(value)",
    "P:LibreMetaverse.AgentManager.Balance":
        "self.native_balance()",
    "P:LibreMetaverse.AgentManager.Balance#set":
        "self.native_set_balance(value)",
    "P:LibreMetaverse.AgentManager.LastNavMeshStatus":
        "self.native_last_nav_mesh_status()",
    "P:LibreMetaverse.AgentManager.LastNavMeshStatus#set":
        "self.native_set_last_nav_mesh_status(value)",
    "P:LibreMetaverse.AgentManager.AgentID":
        "self.native_agent_id()",
    "P:LibreMetaverse.AgentManager.AgentID#set":
        "self.native_set_agent_id(value)",
    "P:LibreMetaverse.AgentManager.SessionID":
        "self.native_session_id()",
    "P:LibreMetaverse.AgentManager.SessionID#set":
        "self.native_set_session_id(value)",
    "P:LibreMetaverse.AgentManager.Acceleration":
        "self.native_movement_runtime().acceleration()",
    "P:LibreMetaverse.AgentManager.AngularVelocity":
        "self.native_movement_runtime().angular_velocity()",
    "P:LibreMetaverse.AgentManager.GlobalPosition":
        "self.native_movement_runtime().global_position()",
    "P:LibreMetaverse.AgentManager.HomePosition":
        "self.native_movement_runtime().home_position()",
    "P:LibreMetaverse.AgentManager.LastPositionUpdate":
        "self.native_movement_runtime().last_position_update()",
    "P:LibreMetaverse.AgentManager.LastPositionUpdate#set":
        "self.native_movement_runtime().set_last_position_update(value)",
    "P:LibreMetaverse.AgentManager.RelativePosition":
        "self.native_movement_runtime().relative_position()",
    "P:LibreMetaverse.AgentManager.RelativePosition#set":
        "self.native_movement_runtime().set_relative_position(value)",
    "P:LibreMetaverse.AgentManager.RelativePositionEstimate":
        "self.native_movement_runtime().relative_position_estimate()",
    "P:LibreMetaverse.AgentManager.RelativePositionEstimate#set":
        "self.native_movement_runtime().set_relative_position(value)",
    "P:LibreMetaverse.AgentManager.RelativeRotation":
        "self.native_movement_runtime().relative_rotation()",
    "P:LibreMetaverse.AgentManager.RelativeRotation#set":
        "self.native_movement_runtime().set_relative_rotation(value)",
    "P:LibreMetaverse.AgentManager.SimPosition":
        "self.native_movement_runtime().sim_position()",
    "P:LibreMetaverse.AgentManager.SimRotation":
        "self.native_movement_runtime().sim_rotation()",
    "P:LibreMetaverse.AgentManager.SittingOn":
        "self.native_movement_runtime().sitting_on()",
    "P:LibreMetaverse.AgentManager.TeleportMessage":
        "self.native_movement_runtime().teleport_message()",
    "P:LibreMetaverse.AgentManager.TeleportMessage#set":
        "self.native_movement_runtime().set_teleport_message(value)",
    "P:LibreMetaverse.AgentManager.Velocity":
        "self.native_movement_runtime().velocity()",
    "E:LibreMetaverse.NetworkManager.Disconnected":
        "self.native_subscribe_disconnected(handler)",
    "E:LibreMetaverse.NetworkManager.EventQueueRunning":
        "self.native_subscribe_event_queue_running(handler)",
    "E:LibreMetaverse.NetworkManager.GenericStreamingMessage":
        "self.native_subscribe_generic_streaming_message(handler)",
    "E:LibreMetaverse.NetworkManager.LoggedOut":
        "self.native_subscribe_logged_out(handler)",
    "E:LibreMetaverse.NetworkManager.LoginProgress":
        "self.native_subscribe_login_progress(handler)",
    "E:LibreMetaverse.NetworkManager.PacketSent":
        "self.native_subscribe_packet_sent(handler)",
    "E:LibreMetaverse.NetworkManager.SimChanged":
        "self.native_subscribe_sim_changed(handler)",
    "E:LibreMetaverse.NetworkManager.SimConnected":
        "self.native_subscribe_sim_connected(handler)",
    "E:LibreMetaverse.NetworkManager.SimConnecting":
        "self.native_subscribe_sim_connecting(handler)",
    "E:LibreMetaverse.NetworkManager.SimDisconnected":
        "self.native_subscribe_sim_disconnected(handler)",
    "M:LibreMetaverse.NetworkManager.#ctor(LibreMetaverse.GridClient)":
        "crate::network_manager::NetworkManager::native_new(client)",
    "M:LibreMetaverse.NetworkManager.AbortLogin":
        "self.native_abort_login()",
    "M:LibreMetaverse.NetworkManager.BeginLogin(LibreMetaverse.LoginParams)":
        "self.native_begin_login(login_params)",
    "M:LibreMetaverse.NetworkManager.BeginLogout":
        "self.native_begin_logout()",
    "M:LibreMetaverse.NetworkManager.Connect(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri)":
        "self.native_connect(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y)",
    "M:LibreMetaverse.NetworkManager.Connect(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
        "self.native_connect(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, size_x, size_y)",
    "M:LibreMetaverse.NetworkManager.Connect(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri)":
        "self.native_connect(end_point, handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y)",
    "M:LibreMetaverse.NetworkManager.Connect(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
        "self.native_connect(end_point, handle, set_default, seedcaps, size_x, size_y)",
    "M:LibreMetaverse.NetworkManager.ConnectAsync(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri)":
        "self.native_connect_async(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y).await",
    "M:LibreMetaverse.NetworkManager.ConnectAsync(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
        "self.native_connect_async(end_point, handle, set_default, seedcaps, size_x, size_y).await",
    "M:LibreMetaverse.NetworkManager.DisconnectSim(LibreMetaverse.Simulator,System.Boolean)":
        "self.native_disconnect_sim(simulator, send_close_circuit)",
    "M:LibreMetaverse.NetworkManager.EnqueueIncoming(LibreMetaverse.NetworkManager.IncomingPacket)":
        "self.native_enqueue_incoming(packet)",
    "M:LibreMetaverse.NetworkManager.EnqueueOutgoing(LibreMetaverse.NetworkManager.OutgoingPacket)":
        "self.native_enqueue_outgoing(packet)",
    "M:LibreMetaverse.NetworkManager.FindSimulator(System.Net.IPEndPoint)":
        "Ok(self.native_find_endpoint(end_point))",
    "M:LibreMetaverse.Messages.MessageUtils.DecodeEvent(System.String,LibreMetaverse.StructuredData.OSDMap)":
        "crate::message_decoder::decode_event(&event_name, &map)",
    "M:LibreMetaverse.Messages.MessageUtils.FromDictionaryString(System.Collections.Generic.Dictionary{System.String,System.String})":
        "crate::message_decoder::from_dictionary_string(dict)",
    "M:LibreMetaverse.Messages.MessageUtils.FromDictionaryUri(System.Collections.Generic.Dictionary{System.Uri,System.Uri})":
        "crate::message_decoder::from_dictionary_uri(dict)",
    "M:LibreMetaverse.Messages.MessageUtils.FromIP(System.Net.IPAddress)":
        "crate::message_decoder::from_ip(address)",
    "M:LibreMetaverse.Messages.MessageUtils.ToDictionaryString(LibreMetaverse.StructuredData.OSD)":
        "crate::message_decoder::to_dictionary_string(osd)",
    "M:LibreMetaverse.Messages.MessageUtils.ToDictionaryUri(LibreMetaverse.StructuredData.OSD)":
        "crate::message_decoder::to_dictionary_uri(osd)",
    "M:LibreMetaverse.Messages.MessageUtils.ToIP(LibreMetaverse.StructuredData.OSD)":
        "crate::message_decoder::to_ip(osd)",
    "M:LibreMetaverse.NetworkManager.FindSimulator(System.UInt64)":
        "Ok(self.native_find_handle(handle))",
    "M:LibreMetaverse.NetworkManager.DefaultLoginParams(System.String,System.String,System.String,System.String,System.String)":
        "self.native_default_login_params(first_name, last_name, password, channel, version)",
    "M:LibreMetaverse.NetworkManager.GetHashedMAC":
        "crate::login::hashed_mac()",
    "M:LibreMetaverse.NetworkManager.GetMAC":
        "Ok(crate::login::mac_address())",
    "M:LibreMetaverse.NetworkManager.GetPlatform":
        "Ok(crate::login::platform())",
    "M:LibreMetaverse.NetworkManager.GetPlatformVersion":
        "Ok(crate::login::platform_version())",
    "M:LibreMetaverse.NetworkManager.RefreshMac":
        "Ok(crate::login::refresh_mac())",
    "M:LibreMetaverse.NetworkManager.Login(LibreMetaverse.LoginResponseData)":
        "self.native_login_response(response)",
    "M:LibreMetaverse.NetworkManager.LoginAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.String,System.Threading.CancellationToken)":
        "self.native_login_credential(credential, channel, Some(start), version, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.LoginAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.Threading.CancellationToken)":
        "self.native_login_credential(credential, channel, None, version, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.LoginAsync(LibreMetaverse.LoginParams,System.Threading.CancellationToken)":
        "self.native_login(login_params, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.LoginAsync(System.String,System.String,System.String,System.String,System.String,System.String,System.Threading.CancellationToken)":
        "self.native_login_strings(first_name, last_name, password, channel, start, version, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.String,System.Threading.CancellationToken)":
        "self.native_login_credential_response(credential, channel, Some(start), version, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.Threading.CancellationToken)":
        "self.native_login_credential_response(credential, channel, None, version, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(LibreMetaverse.LoginParams,System.Threading.CancellationToken)":
        "self.native_login_response_async(login_params, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(System.String,System.String,System.String,System.String,System.String,System.String,System.Threading.CancellationToken)":
        "self.native_login_strings_response(first_name, last_name, password, channel, start, version, cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.Logout":
        "self.native_logout()",
    "M:LibreMetaverse.NetworkManager.LogoutAsync(System.Threading.CancellationToken)":
        "self.native_logout_async(cancellation_token).await",
    "M:LibreMetaverse.NetworkManager.RegisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback)":
        "self.native_register_login_response_callback(callback, None)",
    "M:LibreMetaverse.NetworkManager.RegisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback,System.String[])":
        "self.native_register_login_response_callback(callback, options)",
    "M:LibreMetaverse.NetworkManager.RequestLogout":
        "self.native_request_logout()",
    "M:LibreMetaverse.NetworkManager.StartLocation(System.String,System.Int32,System.Int32,System.Int32)":
        "Ok(crate::login::start_location(&sim, x, y, z))",
    "M:LibreMetaverse.NetworkManager.UnregisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback)":
        "self.native_unregister_login_response_callback(&callback)",
    "M:LibreMetaverse.InventoryFolder.#ctor(LibreMetaverse.UUID)":
        "Ok(Self { base: crate::InventoryBase { native_uuid: uuid, native_owner_id: libremetaverse_types::UUID::zero(), native_parent_uuid: libremetaverse_types::UUID::zero(), native_name: String::new() }, native_descendent_count: 0, native_preferred_type: libremetaverse_types::FolderType::None, native_version: Self::VERSION_UNKNOWN })",
    "P:LibreMetaverse.InventoryBase.Name":
        "self.native_name.clone()",
    "P:LibreMetaverse.InventoryBase.Name#set":
        "self.native_name = value",
    "P:LibreMetaverse.InventoryBase.OwnerID":
        "self.native_owner_id",
    "P:LibreMetaverse.InventoryBase.OwnerID#set":
        "self.native_owner_id = value",
    "P:LibreMetaverse.InventoryBase.ParentUUID":
        "self.native_parent_uuid",
    "P:LibreMetaverse.InventoryBase.ParentUUID#set":
        "self.native_parent_uuid = value",
    "P:LibreMetaverse.InventoryBase.UUID":
        "self.native_uuid",
    "P:LibreMetaverse.InventoryBase.UUID#set":
        "self.native_uuid = value",
    "P:LibreMetaverse.InventoryFolder.DescendentCount":
        "self.native_descendent_count",
    "P:LibreMetaverse.InventoryFolder.DescendentCount#set":
        "self.native_descendent_count = value",
    "P:LibreMetaverse.InventoryFolder.PreferredType":
        "self.native_preferred_type",
    "P:LibreMetaverse.InventoryFolder.PreferredType#set":
        "self.native_preferred_type = value",
    "P:LibreMetaverse.InventoryFolder.Version":
        "self.native_version",
    "P:LibreMetaverse.InventoryFolder.Version#set":
        "self.native_version = value",
    "M:LibreMetaverse.NetworkManager.RegisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs})":
        "self.native_register_callback(type_, callback, true)",
    "M:LibreMetaverse.NetworkManager.RegisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs},System.Boolean)":
        "self.native_register_callback(type_, callback, is_async)",
    "M:LibreMetaverse.NetworkManager.RegisterEventCallback(System.String,LibreMetaverse.Caps.EventQueueCallback)":
        "self.native_register_caps(caps_event, callback)",
    "M:LibreMetaverse.NetworkManager.SendPacket(LibreMetaverse.Packets.Packet)":
        "self.native_send_packet(packet, None)",
    "M:LibreMetaverse.NetworkManager.SendPacket(LibreMetaverse.Packets.Packet,LibreMetaverse.Simulator)":
        "self.native_send_packet(packet, simulator)",
    "M:LibreMetaverse.NetworkManager.Shutdown(LibreMetaverse.NetworkManager.DisconnectType)":
        "self.native_shutdown(type_, format!(\"{type_:?}\"))",
    "M:LibreMetaverse.NetworkManager.Shutdown(LibreMetaverse.NetworkManager.DisconnectType,System.String)":
        "self.native_shutdown(type_, message)",
    "M:LibreMetaverse.NetworkManager.ShutdownAsync(LibreMetaverse.NetworkManager.DisconnectType,System.String)":
        "self.native_shutdown_async(type_, message).await",
    "M:LibreMetaverse.NetworkManager.UnregisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs})":
        "self.native_unregister_callback(type_, callback)",
    "M:LibreMetaverse.NetworkManager.UnregisterEventCallback(System.String,LibreMetaverse.Caps.EventQueueCallback)":
        "self.native_unregister_caps(caps_event, callback)",
    "P:LibreMetaverse.NetworkManager.CircuitCode":
        "self.native_circuit_code()",
    "P:LibreMetaverse.NetworkManager.CircuitCode#set":
        "self.native_set_circuit_code(value)",
    "P:LibreMetaverse.NetworkManager.Connected":
        "self.native_connected()",
    "P:LibreMetaverse.NetworkManager.Connected#set":
        "self.native_set_connected(value)",
    "P:LibreMetaverse.NetworkManager.CurrentSim":
        "self.native_current_sim()",
    "P:LibreMetaverse.NetworkManager.CurrentSim#set":
        "self.native_set_current_sim(value)",
    "P:LibreMetaverse.NetworkManager.InboxCount":
        "self.native_inbox_count()",
    "P:LibreMetaverse.NetworkManager.AccountLevelBenefits":
        "self.native_account_level_benefits()",
    "P:LibreMetaverse.NetworkManager.AgentAppearanceServiceURL":
        "self.native_agent_appearance_service_url()",
    "P:LibreMetaverse.NetworkManager.LoginErrorKey":
        "self.native_login_error_key()",
    "P:LibreMetaverse.NetworkManager.LoginErrorKey#set":
        "self.native_set_login_error_key(value)",
    "P:LibreMetaverse.NetworkManager.LoginMessage":
        "self.native_login_message()",
    "P:LibreMetaverse.NetworkManager.LoginMessage#set":
        "self.native_set_login_message(value)",
    "P:LibreMetaverse.NetworkManager.LoginSeedCapability":
        "self.native_login_seed_capability()",
    "P:LibreMetaverse.NetworkManager.LoginSeedCapability#set":
        "self.native_set_login_seed_capability(value)",
    "P:LibreMetaverse.NetworkManager.LoginStatusCode":
        "self.native_login_status_code()",
    "P:LibreMetaverse.NetworkManager.LoginStatusCode#set":
        "self.native_set_login_status_code(value)",
    "P:LibreMetaverse.NetworkManager.MaxAgentGroups":
        "self.native_max_agent_groups()",
    "P:LibreMetaverse.NetworkManager.OutboxCount":
        "self.native_outbox_count()",
    "M:LibreMetaverse.Simulator.#ctor(LibreMetaverse.GridClient,System.Net.IPEndPoint,System.UInt64,System.UInt32,System.UInt32)":
        "crate::network_manager::Simulator::native_new(client, address, handle, size_x, size_y)",
    "M:LibreMetaverse.Simulator.Connect(System.Boolean)":
        "self.native_connect(move_to_sim)",
    "M:LibreMetaverse.Simulator.ConnectAsync(System.Boolean)":
        "self.native_connect_async(move_to_sim).await",
    "M:LibreMetaverse.Simulator.Disconnect(System.Boolean)":
        "self.native_disconnect(send_close_circuit)",
    "M:LibreMetaverse.Simulator.Dispose":
        "self.native_dispose()",
    "M:LibreMetaverse.Simulator.Equals(System.Object)":
        "self.native_equals(obj)",
    "M:LibreMetaverse.Simulator.GetHashCode":
        "self.native_hash_code()",
    "M:LibreMetaverse.Simulator.IsEventQueueRunning(System.Boolean)":
        "self.native_is_event_queue_running(block_until_running)",
    "M:LibreMetaverse.Simulator.Pause":
        "self.native_pause()",
    "M:LibreMetaverse.Simulator.Resume":
        "self.native_resume()",
    "M:LibreMetaverse.Simulator.SendPacket(LibreMetaverse.Packets.Packet)":
        "self.native_send_packet(packet)",
    "M:LibreMetaverse.Simulator.SendPacketData(System.Byte[],System.Int32,LibreMetaverse.Packets.PacketType,System.Boolean)":
        "self.native_send_packet_data(data, data_length, type_, do_zerocode)",
    "M:LibreMetaverse.Simulator.SendPing":
        "self.native_send_ping()",
    "M:LibreMetaverse.Simulator.SetSeedCaps(System.Uri,System.Boolean)":
        "self.native_set_seed_caps(seedcaps, changed_sim)",
    "M:LibreMetaverse.Simulator.ToString":
        "self.native_to_string()",
    "M:LibreMetaverse.Simulator.UseCircuitCode(System.Boolean)":
        "self.native_use_circuit_code(wait_for_ack)",
    "M:LibreMetaverse.Simulator.UseCircuitCodeAsync(System.Boolean)":
        "self.native_use_circuit_code_async(wait_for_ack).await",
    "M:LibreMetaverse.Simulator.op_Equality(LibreMetaverse.Simulator,LibreMetaverse.Simulator)":
        "lhs == rhs",
    "M:LibreMetaverse.Simulator.op_Inequality(LibreMetaverse.Simulator,LibreMetaverse.Simulator)":
        "lhs != rhs",
    "P:LibreMetaverse.Simulator.Connected":
        "self.native_is_connected()",
    "P:LibreMetaverse.Simulator.HandshakeComplete":
        "self.native_handshake_complete()",
    "P:LibreMetaverse.Simulator.IPEndPoint":
        "self.native_ip_end_point()",
    "P:LibreMetaverse.GridClient.Settings":
        "&mut self.settings",
    "P:LibreMetaverse.GridClient.TimeProvider":
        "self.time_provider.clone()",
    "P:LibreMetaverse.GridClient.TimeProvider#set":
        "self.time_provider = value",
    "F:LibreMetaverse.Settings.BindAddress":
        "std::net::IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED)",
    "F:LibreMetaverse.Settings.LogLevel":
        "crate::logging::LogLevel(1)",
    "F:LibreMetaverse.Settings.MaxHttpConnections":
        "32",
    "F:LibreMetaverse.Settings.PacketArchiveSize":
        "1000",
    "F:LibreMetaverse.Settings.ResourceDir":
        '"linden".to_owned()',
    "F:LibreMetaverse.Settings.SimulatorPoolTimeout":
        "120_000",
    "F:LibreMetaverse.Settings.TexturePipelineRefreshInterval":
        "500.0",
    "F:LibreMetaverse.Settings.UdpReceiveQueueCapacity":
        "512",
    "F:LibreMetaverse.Settings.UserAgent":
        '"LibreMetaverse".to_owned()',
    "M:LibreMetaverse.Settings.#ctor(LibreMetaverse.GridClient)":
        "Ok(crate::client_core::Settings::defaults())",
    "P:LibreMetaverse.Settings.Agent":
        "self.agent.clone()",
    "P:LibreMetaverse.Settings.AssetCache":
        "self.asset_cache.clone()",
    "P:LibreMetaverse.Settings.Connection":
        "self.connection.clone()",
    "P:LibreMetaverse.Settings.Logging":
        "self.logging.clone()",
    "P:LibreMetaverse.Settings.Packets":
        "self.packets.clone()",
    "P:LibreMetaverse.Settings.Parcel":
        "self.parcel.clone()",
    "P:LibreMetaverse.Settings.TexturePipeline":
        "self.texture_pipeline.clone()",
    "P:LibreMetaverse.Settings.Timing":
        "&mut self.timing",
    "P:LibreMetaverse.Settings.UploadCost":
        "self.upload_cost",
    "P:LibreMetaverse.Settings.UploadCost#set":
        "self.upload_cost = value",
    "P:LibreMetaverse.Settings.World":
        "self.world.clone()",
    "M:LibreMetaverse.Avatar.#ctor":
        "crate::visual_catalog::new_avatar()",
    "M:LibreMetaverse.Avatar.DecodeVisualParams":
        "Ok(crate::visual_catalog::decode_visual_params(&self.visual_parameters))",
    "M:LibreMetaverse.AvatarAppearanceEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Boolean,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Primitive.TextureEntryFace[],System.Collections.Generic.List{System.Byte},System.Byte,System.Int32,LibreMetaverse.AppearanceFlags,System.Int32)":
        "Ok(Self { stored_visual_params: visual_params })",
    "M:LibreMetaverse.AvatarAppearanceEventArgs.DecodeVisualParams":
        "Ok(crate::visual_catalog::decode_visual_params(&self.stored_visual_params))",
    "P:LibreMetaverse.AvatarAppearanceEventArgs.VisualParams":
        "self.stored_visual_params.clone()",
    "M:LibreMetaverse.Primitive.GetGrassDefinition":
        "crate::foliage_catalog::grass_by_id(self.prim_data.state)",
    "M:LibreMetaverse.Primitive.GetTreeDefinition":
        "crate::foliage_catalog::TreeDefinitions::get(self.tree_species)",
    "M:LibreMetaverse.StructuredData.OSDParser.BufferCharactersEqual(System.IO.StringReader,System.Char[],System.Int32)":
        "crate::notation::buffer_characters_equal(reader, buffer, offset)",
    "M:LibreMetaverse.StructuredData.OSDParser.ConsumeBytes(System.IO.Stream,System.Int32)":
        "crate::binary::consume_bytes(stream, consume_bytes)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDBinary(System.Byte[])":
        "crate::binary::deserialize_bytes(binary_data)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDBinary(System.IO.Stream)":
        "crate::binary::deserialize_stream(stream)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDNotation(System.IO.StringReader)":
        "crate::notation::deserialize_reader(reader)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDNotation(System.String)":
        "crate::notation::deserialize_string(notation_data)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDProtobuf(System.Byte[])":
        "crate::protobuf::deserialize_bytes(data)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDProtobuf(System.IO.Stream)":
        "crate::protobuf::deserialize_stream(stream)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeJson(System.IO.Stream)":
        "crate::json_codec::deserialize_stream(json)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeJson(System.String)":
        "crate::json_codec::deserialize_string(json)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.Byte[])":
        "crate::xml_codec::deserialize_bytes(xml_data)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.IO.Stream)":
        "crate::xml_codec::deserialize_stream(xml_stream)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.String)":
        "crate::xml_codec::deserialize_string(xml_data)",
    "M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.Xml.XmlReader)":
        "crate::xml_codec::deserialize_reader(xml_data)",
    "M:LibreMetaverse.StructuredData.OSDParser.EscapeCharacter(System.String,System.Char)":
        "crate::notation::escape_character(s, c)",
    "M:LibreMetaverse.StructuredData.OSDParser.FindByte(System.IO.Stream,System.Byte)":
        "crate::binary::find_byte(stream, to_find)",
    "M:LibreMetaverse.StructuredData.OSDParser.FindString(System.IO.Stream,System.String)":
        "crate::binary::find_string(stream, to_find)",
    "M:LibreMetaverse.StructuredData.OSDParser.GetLengthInBrackets(System.IO.StringReader)":
        "crate::notation::get_length_in_brackets(reader)",
    "M:LibreMetaverse.StructuredData.OSDParser.GetStringDelimitedBy(System.IO.StringReader,System.Char)":
        "crate::notation::get_string_delimited_by(reader, delimiter)",
    "M:LibreMetaverse.StructuredData.OSDParser.HostToNetworkIntBytes(System.Int32)":
        "crate::binary::host_to_network_int_bytes(int_host_end)",
    "M:LibreMetaverse.StructuredData.OSDParser.NetworkToHostDouble(System.Byte[])":
        "crate::binary::network_to_host_double(binary_net_end)",
    "M:LibreMetaverse.StructuredData.OSDParser.NetworkToHostInt(System.Byte[])":
        "crate::binary::network_to_host_int(binary_net_end)",
    "M:LibreMetaverse.StructuredData.OSDParser.PeekAndSkipWhitespace(System.IO.StringReader)":
        "crate::notation::peek_and_skip_whitespace(reader)",
    "M:LibreMetaverse.StructuredData.OSDParser.ReadAndSkipWhitespace(System.IO.StringReader)":
        "crate::notation::read_and_skip_whitespace(reader)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinary(LibreMetaverse.StructuredData.OSD)":
        "crate::binary::serialize(osd)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinary(LibreMetaverse.StructuredData.OSD,System.Boolean)":
        "crate::binary::serialize_with_header(osd, prepend_header)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinaryStream(LibreMetaverse.StructuredData.OSD)":
        "crate::binary::serialize_stream(data)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinaryStream(LibreMetaverse.StructuredData.OSD,System.Boolean)":
        "crate::binary::serialize_stream_with_header(data, prepend_header)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeJsonString(LibreMetaverse.StructuredData.OSD,System.Boolean)":
        "crate::json_codec::serialize(osd, preserve_defaults)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDInnerXmlString(LibreMetaverse.StructuredData.OSD)":
        "crate::xml_codec::serialize_inner(data)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotation(LibreMetaverse.StructuredData.OSD)":
        "crate::notation::serialize(osd)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotationFormatted(LibreMetaverse.StructuredData.OSD)":
        "crate::notation::serialize_formatted(osd)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotationStream(LibreMetaverse.StructuredData.OSD)":
        "crate::notation::serialize_stream(osd)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotationStreamFormatted(LibreMetaverse.StructuredData.OSD)":
        "crate::notation::serialize_stream_formatted(osd)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDProtobuf(LibreMetaverse.StructuredData.OSD,System.Boolean)":
        "crate::protobuf::serialize(osd, prepend_header)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDXmlBytes(LibreMetaverse.StructuredData.OSD)":
        "crate::xml_codec::serialize_bytes(data)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDXmlElement(System.Xml.XmlWriter,LibreMetaverse.StructuredData.OSD)":
        "crate::xml_codec::serialize_element(writer, data)",
    "M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDXmlString(LibreMetaverse.StructuredData.OSD)":
        "crate::xml_codec::serialize_string(data)",
    "M:LibreMetaverse.StructuredData.OSDParser.SkipWhiteSpace(System.IO.Stream)":
        "crate::binary::skip_whitespace(stream)",
    "M:LibreMetaverse.StructuredData.OSDParser.UnescapeCharacter(System.String,System.Char)":
        "crate::notation::unescape_character(s, c)",
    "M:LibreMetaverse.StructuredData.OSDParser.Deserialize(System.Byte[])":
        "crate::dispatch::deserialize_bytes(data)",
    "M:LibreMetaverse.StructuredData.OSDParser.Deserialize(System.IO.Stream)":
        "crate::dispatch::deserialize_stream(stream)",
    "M:LibreMetaverse.StructuredData.OSDParser.Deserialize(System.String)":
        "crate::dispatch::deserialize_string(data)",
    "M:LibreMetaverse.Utils.ReadSingleLittleEndian(System.Byte[],System.Int32)":
        "crate::byte_order::read_single_little_endian(src, pos)",
    "M:LibreMetaverse.Utils.WriteSingleLittleEndian(System.Byte[],System.Int32,System.Single)":
        "crate::byte_order::write_single_little_endian(dest, pos, value)",
    "M:LibreMetaverse.Utils.ReadDoubleLittleEndian(System.Byte[],System.Int32)":
        "crate::byte_order::read_double_little_endian(src, pos)",
    "M:LibreMetaverse.Utils.WriteDoubleLittleEndian(System.Byte[],System.Int32,System.Double)":
        "crate::byte_order::write_double_little_endian(dest, pos, value)",
}

# Native RLV state, inventory, lock, camera, and permission layer.  Property
# setter entries use the generator's ``#set`` suffix so both C# accessors stay
# tied to explicit Rust implementations.
NATIVE_MEMBER_BODIES.update({
    "P:LibreMetaverse.RLV.CameraRestrictions.AvDist": "self.native_av_dist()",
    "P:LibreMetaverse.RLV.CameraRestrictions.AvDistMax": "self.native_av_dist_max()",
    "P:LibreMetaverse.RLV.CameraRestrictions.AvDistMin": "self.native_av_dist_min()",
    "P:LibreMetaverse.RLV.CameraRestrictions.DrawAlphaMax": "self.native_draw_alpha_max()",
    "P:LibreMetaverse.RLV.CameraRestrictions.DrawAlphaMin": "self.native_draw_alpha_min()",
    "P:LibreMetaverse.RLV.CameraRestrictions.DrawColor": "self.native_draw_color()",
    "P:LibreMetaverse.RLV.CameraRestrictions.DrawMax": "self.native_draw_max()",
    "P:LibreMetaverse.RLV.CameraRestrictions.DrawMin": "self.native_draw_min()",
    "P:LibreMetaverse.RLV.CameraRestrictions.FovMax": "self.native_fov_max()",
    "P:LibreMetaverse.RLV.CameraRestrictions.FovMin": "self.native_fov_min()",
    "P:LibreMetaverse.RLV.CameraRestrictions.IsLocked": "self.native_is_locked()",
    "P:LibreMetaverse.RLV.CameraRestrictions.Texture": "self.native_texture()",
    "P:LibreMetaverse.RLV.CameraRestrictions.ZoomMax": "self.native_zoom_max()",
    "P:LibreMetaverse.RLV.CameraRestrictions.ZoomMin": "self.native_zoom_min()",
    "M:LibreMetaverse.RLV.CameraSettings.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)":
        "Self::native_new(av_dist_min, av_dist_max, fov_min, fov_max, zoom_min, current_fov)",
    "P:LibreMetaverse.RLV.CameraSettings.AvDistMax": "self.native_av_dist_max()",
    "P:LibreMetaverse.RLV.CameraSettings.AvDistMin": "self.native_av_dist_min()",
    "P:LibreMetaverse.RLV.CameraSettings.CurrentFov": "self.native_current_fov()",
    "P:LibreMetaverse.RLV.CameraSettings.FovMax": "self.native_fov_max()",
    "P:LibreMetaverse.RLV.CameraSettings.FovMin": "self.native_fov_min()",
    "P:LibreMetaverse.RLV.CameraSettings.ZoomMin": "self.native_zoom_min()",
    "M:LibreMetaverse.RLV.EventArguments.RestrictionUpdatedEventArgs.#ctor(LibreMetaverse.RLV.RlvRestriction,System.Boolean,System.Boolean)":
        "Self::native_new(restriction, is_new, is_deleted)",
    "P:LibreMetaverse.RLV.EventArguments.RestrictionUpdatedEventArgs.IsDeleted": "self.native_is_deleted()",
    "P:LibreMetaverse.RLV.EventArguments.RestrictionUpdatedEventArgs.IsNew": "self.native_is_new()",
    "P:LibreMetaverse.RLV.EventArguments.RestrictionUpdatedEventArgs.Restriction": "self.native_restriction()",
    "M:LibreMetaverse.RLV.InventoryMap.#ctor(LibreMetaverse.RLV.RlvSharedFolder,System.Collections.Generic.IReadOnlyCollection{LibreMetaverse.RLV.RlvInventoryItem})":
        "Self::native_new(root, external_items)",
    "M:LibreMetaverse.RLV.InventoryMap.FindFoldersContaining(System.Boolean,System.Nullable{System.Guid},System.Nullable{LibreMetaverse.RLV.RlvAttachmentPoint},System.Nullable{LibreMetaverse.RLV.RlvWearableType})":
        "self.native_find_folders_containing(limit_to_one_result, attached_prim_id, attachment_point, wearable_type)",
    "M:LibreMetaverse.RLV.InventoryMap.GetItemsByAttachmentPoint(LibreMetaverse.RLV.RlvAttachmentPoint)":
        "self.native_get_items_by_attachment_point(attachment_point)",
    "M:LibreMetaverse.RLV.InventoryMap.GetItemsById(System.Guid)": "self.native_get_items_by_id(item_id)",
    "M:LibreMetaverse.RLV.InventoryMap.GetItemsByPrimId(System.Guid)": "self.native_get_items_by_prim_id(prim_id)",
    "M:LibreMetaverse.RLV.InventoryMap.GetItemsByWearableType(LibreMetaverse.RLV.RlvWearableType)":
        "self.native_get_items_by_wearable_type(wearable_type)",
    "M:LibreMetaverse.RLV.InventoryMap.TryBuildPathToFolder(System.Guid,System.String@)":
        "self.native_try_build_path_to_folder(folder_id, final_path)",
    "M:LibreMetaverse.RLV.InventoryMap.TryGetFolderFromPath(System.String,System.Boolean,LibreMetaverse.RLV.RlvSharedFolder@)":
        "self.native_try_get_folder_from_path(path, skip_private_folders, folder)",
    "P:LibreMetaverse.RLV.InventoryMap.ExternalItems": "self.native_external_items()",
    "P:LibreMetaverse.RLV.InventoryMap.Folders": "self.native_folders()",
    "P:LibreMetaverse.RLV.InventoryMap.Items": "self.native_items()",
    "P:LibreMetaverse.RLV.InventoryMap.Root": "self.native_root()",
    "M:LibreMetaverse.RLV.LockedFolderPublic.ToString": "self.native_to_string()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.AttachExceptions": "self.native_attach_exceptions()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.AttachRestrictions": "self.native_attach_restrictions()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.CanAttach": "self.native_can_attach()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.CanDetach": "self.native_can_detach()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.DetachExceptions": "self.native_detach_exceptions()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.DetachRestrictions": "self.native_detach_restrictions()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.Id": "self.native_id()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.IsLocked": "self.native_is_locked()",
    "P:LibreMetaverse.RLV.LockedFolderPublic.Name": "self.native_name()",
    "M:LibreMetaverse.RLV.RlvBlacklist.BlacklistBehavior(System.String)": "self.native_blacklist_behavior(behavior)",
    "M:LibreMetaverse.RLV.RlvBlacklist.GetBlacklist": "self.native_get_blacklist()",
    "M:LibreMetaverse.RLV.RlvBlacklist.IsBlacklisted(System.String)": "self.native_is_blacklisted(behavior)",
    "M:LibreMetaverse.RLV.RlvBlacklist.UnBlacklistBehavior(System.String)": "self.native_un_blacklist_behavior(behavior)",
    "M:LibreMetaverse.RLV.RlvInventoryItem.#ctor(System.Guid,System.String,System.Boolean,System.Nullable{System.Guid},System.Nullable{LibreMetaverse.RLV.RlvAttachmentPoint},System.Nullable{System.Guid},System.Nullable{LibreMetaverse.RLV.RlvWearableType},System.Nullable{LibreMetaverse.RLV.RlvGestureState})":
        "Self::native_new(id, name, is_link, external_folder_id, attached_to, attached_prim_id, worn_on, gesture_state)",
    "M:LibreMetaverse.RLV.RlvInventoryItem.ToString": "self.native_to_string()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.AttachedPrimId": "self.native_attached_prim_id()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.AttachedPrimId#set": "self.native_set_attached_prim_id(value)",
    "P:LibreMetaverse.RLV.RlvInventoryItem.AttachedTo": "self.native_attached_to()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.AttachedTo#set": "self.native_set_attached_to(value)",
    "P:LibreMetaverse.RLV.RlvInventoryItem.Folder": "self.native_folder()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.FolderId": "self.native_folder_id()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.GestureState": "self.native_gesture_state()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.GestureState#set": "self.native_set_gesture_state(value)",
    "P:LibreMetaverse.RLV.RlvInventoryItem.Id": "self.native_id()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.IsLink": "self.native_is_link()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.IsLink#set": "self.native_set_is_link(value)",
    "P:LibreMetaverse.RLV.RlvInventoryItem.Name": "self.native_name()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.Name#set": "self.native_set_name(value)",
    "P:LibreMetaverse.RLV.RlvInventoryItem.WornOn": "self.native_worn_on()",
    "P:LibreMetaverse.RLV.RlvInventoryItem.WornOn#set": "self.native_set_worn_on(value)",
    "E:LibreMetaverse.RLV.RlvRestrictionManager.RestrictionUpdated": "self.native_subscribe_restriction_updated(handler)",
    "M:LibreMetaverse.RLV.RlvRestrictionManager.FindRestrictions(System.String,System.Nullable{System.Guid})":
        "self.native_find_restrictions(behavior_name_filter, sender_filter)",
    "M:LibreMetaverse.RLV.RlvRestrictionManager.GetLockedFolders": "self.native_get_locked_folders()",
    "M:LibreMetaverse.RLV.RlvRestrictionManager.GetRestrictionsByType(LibreMetaverse.RLV.RlvRestrictionType)":
        "self.native_get_restrictions_by_type(restriction_type)",
    "M:LibreMetaverse.RLV.RlvRestrictionManager.GetTrackedPrimIds": "self.native_get_tracked_prim_ids()",
    "M:LibreMetaverse.RLV.RlvRestrictionManager.RemoveRestrictionsForObjectsAsync(System.Collections.Generic.IEnumerable{System.Guid},System.Threading.CancellationToken)":
        "self.native_remove_restrictions_for_objects(prim_ids, cancellation_token).await",
    "M:LibreMetaverse.RLV.RlvRestrictionManager.TryGetLockedFolder(System.Guid,LibreMetaverse.RLV.LockedFolderPublic@)":
        "self.native_try_get_locked_folder(folder_id, locked_folder)",
    "M:LibreMetaverse.RLV.RlvSharedFolder.#ctor(System.Guid,System.String)": "Self::native_new(id, name)",
    "M:LibreMetaverse.RLV.RlvSharedFolder.AddChild(System.Guid,System.String)": "self.native_add_child(id, name)",
    "M:LibreMetaverse.RLV.RlvSharedFolder.AddItem(System.Guid,System.String,System.Boolean,System.Nullable{LibreMetaverse.RLV.RlvAttachmentPoint},System.Nullable{System.Guid},System.Nullable{LibreMetaverse.RLV.RlvWearableType},System.Nullable{LibreMetaverse.RLV.RlvGestureState})":
        "self.native_add_item(id, name, is_link, attached_to, attached_prim_id, worn_on, gesture_state)",
    "M:LibreMetaverse.RLV.RlvSharedFolder.ToString": "self.native_to_string()",
    "P:LibreMetaverse.RLV.RlvSharedFolder.Children": "self.native_children()",
    "P:LibreMetaverse.RLV.RlvSharedFolder.Id": "self.native_id()",
    "P:LibreMetaverse.RLV.RlvSharedFolder.Items": "self.native_items()",
    "P:LibreMetaverse.RLV.RlvSharedFolder.Name": "self.native_name()",
    "P:LibreMetaverse.RLV.RlvSharedFolder.Name#set": "self.native_set_name(value)",
    "P:LibreMetaverse.RLV.RlvSharedFolder.Parent": "self.native_parent()",
    "P:LibreMetaverse.RLV.RlvSharedFolder.Parent#set": "self.native_set_parent(value)",
})

NATIVE_MEMBER_BODIES.update({
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanAllowIdle": "self.native_can_allow_idle()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanAlwaysRun": "self.native_can_always_run()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanAttach(LibreMetaverse.RLV.RlvInventoryItem,System.Boolean)":
        "self.native_can_attach_with_item(item, is_shared)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanAttach(System.Nullable{System.Guid},System.Boolean,System.Nullable{LibreMetaverse.RLV.RlvAttachmentPoint},System.Nullable{LibreMetaverse.RLV.RlvWearableType})":
        "self.native_can_attach(object_folder_id, is_shared, attachment_point, wearable_type)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanChat(System.Int32,System.String)":
        "self.native_can_chat(channel, message)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanChatNormal": "self.native_can_chat_normal()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanChatShout": "self.native_can_chat_shout()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanChatWhisper": "self.native_can_chat_whisper()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanDefaultWear": "self.native_can_default_wear()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanDetach(LibreMetaverse.RLV.RlvInventoryItem)":
        "self.native_can_detach_with_item(item)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanDetach(System.Nullable{System.Guid},System.Nullable{System.Guid},System.Nullable{System.Guid},System.Boolean,System.Nullable{LibreMetaverse.RLV.RlvAttachmentPoint},System.Nullable{LibreMetaverse.RLV.RlvWearableType})":
        "self.native_can_detach(item_id, prim_id, folder_id, is_shared, attachment_point, wearable_type)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanEdit(LibreMetaverse.RLV.RlvPermissionsService.ObjectLocation,System.Nullable{System.Guid})":
        "self.native_can_edit(object_location, object_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanEmote": "self.native_can_emote()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanFly": "self.native_can_fly()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanInteract": "self.native_can_interact()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanJump": "self.native_can_jump()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanReceiveChat(System.String,System.Guid)":
        "self.native_can_receive_chat(message, user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanReceiveIM(System.String,System.Nullable{System.Guid},System.String)":
        "self.native_can_receive_im(message, user_id, group_name)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanRez": "self.native_can_rez()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSendChat": "self.native_can_send_chat()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSendGesture": "self.native_can_send_gesture()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSendIM(System.String,System.Nullable{System.Guid},System.String)":
        "self.native_can_send_im(message, user_id, group_name)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSetDebug": "self.native_can_set_debug()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSetEnv": "self.native_can_set_env()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSetGroup": "self.native_can_set_group()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShare(System.Nullable{System.Guid})":
        "self.native_can_share(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowHoverText(LibreMetaverse.RLV.RlvPermissionsService.HoverTextLocation,System.Nullable{System.Guid})":
        "self.native_can_show_hover_text(location, object_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowInv": "self.native_can_show_inv()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowLoc": "self.native_can_show_loc()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowMiniMap": "self.native_can_show_mini_map()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowNameTags(System.Nullable{System.Guid})":
        "self.native_can_show_name_tags(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowNames(System.Nullable{System.Guid})":
        "self.native_can_show_names(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowNearby": "self.native_can_show_nearby()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanShowWorldMap": "self.native_can_show_world_map()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSit": "self.native_can_sit()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanSitTp(System.Single@)": "self.native_can_sit_tp(max_distance)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanStandTp": "self.native_can_stand_tp()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanStartIM(System.Guid)": "self.native_can_start_im(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanTPLure(System.Nullable{System.Guid})":
        "self.native_can_tp_lure(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanTempRun": "self.native_can_temp_run()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanTouch(LibreMetaverse.RLV.RlvPermissionsService.TouchLocation,System.Guid,System.Nullable{System.Guid},System.Nullable{System.Single})":
        "self.native_can_touch(location, prim_id, user_id, distance)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanTpLm": "self.native_can_tp_lm()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanTpLoc": "self.native_can_tp_loc()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanTpLocal(System.Single@)": "self.native_can_tp_local(max_distance)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanTpRequest(System.Nullable{System.Guid})":
        "self.native_can_tp_request(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanUnsit": "self.native_can_unsit()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanViewNote": "self.native_can_view_note()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanViewScript": "self.native_can_view_script()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.CanViewTexture": "self.native_can_view_texture()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.GetCameraRestrictions": "self.native_get_camera_restrictions()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.IsAutoAcceptPermissions": "self.native_is_auto_accept_permissions()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.IsAutoAcceptTp(System.Nullable{System.Guid})":
        "self.native_is_auto_accept_tp(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.IsAutoAcceptTpRequest(System.Nullable{System.Guid})":
        "self.native_is_auto_accept_tp_request(user_id)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.IsAutoDenyPermissions": "self.native_is_auto_deny_permissions()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.IsPermissive": "self.native_is_permissive()",
    "M:LibreMetaverse.RLV.RlvPermissionsService.TryGetMaxFarTouchDistance(System.Single@)":
        "self.native_try_get_max_far_touch_distance(max_distance)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.TryGetRedirChatChannels(System.Collections.Generic.IReadOnlyList{System.Int32}@)":
        "self.native_try_get_redir_chat_channels(channels)",
    "M:LibreMetaverse.RLV.RlvPermissionsService.TryGetRedirEmoteChannels(System.Collections.Generic.IReadOnlyList{System.Int32}@)":
        "self.native_try_get_redir_emote_channels(channels)",
})

CLIENT_CORE_NATIVE_OWNERS = (
    "AgentSettings",
    "AssetCacheSettings",
    "ConnectionSettings",
    "GridClient",
    "LoggingSettings",
    "PacketSettings",
    "ParcelSettings",
    "Settings",
    "TexturePipelineSettings",
    "TimingSettings",
    "WorldSettings",
)

NETWORK_NATIVE_OWNERS = (
    "InventoryBase",
    "InventoryFolder",
    "NetworkManager",
    "Simulator",
)

NATIVE_OWNER_BOUNDS = {
    "T:LibreMetaverse.CacheDictionary`2": {
        "TKey": "TKey: Clone + PartialEq",
        "TValue": "TValue: Clone + PartialEq",
    },
    "T:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator": {
        "TKey": "TKey: Clone",
        "TValue": "TValue: Clone",
    },
    "T:LibreMetaverse.DoubleDictionary`3": {
        "TKey1": "TKey1: Clone + PartialEq",
        "TKey2": "TKey2: Clone + PartialEq",
        "TValue": "TValue: Clone + PartialEq",
    },
    "T:LibreMetaverse.EmptyRemovalStrategy`1": {"TKey": "TKey: Clone + PartialEq + Send"},
    "T:LibreMetaverse.ExpiringCache`2": {
        "TKey": "TKey: Clone + PartialEq",
        "TValue": "TValue: Clone",
    },
    "T:LibreMetaverse.LruRemovalStrategy`1": {"TKey": "TKey: Clone + PartialEq + Send"},
    "T:LibreMetaverse.MruRemovalStrategy`1": {"TKey": "TKey: Clone + PartialEq + Send"},
    "T:LibreMetaverse.MultiValueDictionary`2": {
        "TKey": "TKey: Clone + PartialEq",
        "TValue": "TValue: Clone + PartialEq",
    },
}

MAIN_TARGET = ROOT / "crates/libremetaverse/src/generated.rs"
WIRE_NAMESPACES = (
    "LibreMetaverse.Assets",
    "LibreMetaverse.Formatters",
    "LibreMetaverse.Imaging",
    "LibreMetaverse.ImportExport",
    "LibreMetaverse.Materials",
    "LibreMetaverse.Messages",
    "LibreMetaverse.Packets",
    "LibreMetaverse.Rendering",
)
WIRE_ROOT_TYPES = {
    "T:LibreMetaverse.Animation",
    "T:LibreMetaverse.BitPack",
    "T:LibreMetaverse.Bumpiness",
    "T:LibreMetaverse.FieldType",
    "T:LibreMetaverse.GLTFMaterialUpdate",
    "T:LibreMetaverse.Grass",
    "T:LibreMetaverse.GrassDefinition",
    "T:LibreMetaverse.Interfaces.IMessage",
    "T:LibreMetaverse.LiveParticle",
    "T:LibreMetaverse.MappingType",
    "T:LibreMetaverse.MediaControls",
    "T:LibreMetaverse.MediaEntry",
    "T:LibreMetaverse.MediaPermission",
    "T:LibreMetaverse.NameValue",
    "T:LibreMetaverse.NameValue.ClassType",
    "T:LibreMetaverse.NameValue.SendtoType",
    "T:LibreMetaverse.NameValue.ValueType",
    "T:LibreMetaverse.PacketFrequency",
    "T:LibreMetaverse.PermissionMask",
    "T:LibreMetaverse.PermissionWho",
    "T:LibreMetaverse.Permissions",
    "T:LibreMetaverse.Shininess",
    "T:LibreMetaverse.TextureAttributes",
    "T:LibreMetaverse.Tree",
    "T:LibreMetaverse.TreeDefinition",
}
COMPOSED_BASE_TYPES = {
    "T:LibreMetaverse.InventoryAnimation",
    "T:LibreMetaverse.InventoryAttachment",
    "T:LibreMetaverse.InventoryCallingCard",
    "T:LibreMetaverse.InventoryCategory",
    "T:LibreMetaverse.InventoryFolder",
    "T:LibreMetaverse.InventoryGesture",
    "T:LibreMetaverse.InventoryItem",
    "T:LibreMetaverse.InventoryLSL",
    "T:LibreMetaverse.InventoryLandmark",
    "T:LibreMetaverse.InventoryMaterial",
    "T:LibreMetaverse.InventoryNotecard",
    "T:LibreMetaverse.InventoryObject",
    "T:LibreMetaverse.InventorySettings",
    "T:LibreMetaverse.InventorySnapshot",
    "T:LibreMetaverse.InventorySound",
    "T:LibreMetaverse.InventoryTexture",
    "T:LibreMetaverse.InventoryWearable",
    "T:LibreMetaverse.Messages.Linden.ChatSessionAcceptInvitation",
    "T:LibreMetaverse.Messages.Linden.ChatSessionRequestMuteUpdate",
    "T:LibreMetaverse.Messages.Linden.ChatSessionRequestStartConference",
    "T:LibreMetaverse.Messages.Linden.MapLayerReplyVariant",
    "T:LibreMetaverse.Packets.DirPlacesReplyPacket",
    "T:LibreMetaverse.Packets.TestMessagePacket",
    "T:LibreMetaverse.Rendering.Joint",
}

NATIVE_MESSAGE_CODEC_TYPES = {
    "T:LibreMetaverse.Messages.Linden.AgentDropGroupMessage",
    "T:LibreMetaverse.Messages.Linden.AgentDropGroupMessage.AgentData",
    "T:LibreMetaverse.Messages.Linden.AgentGroupDataUpdateMessage",
    "T:LibreMetaverse.Messages.Linden.AgentGroupDataUpdateMessage.GroupData",
    "T:LibreMetaverse.Messages.Linden.AgentGroupDataUpdateMessage.NewGroupData",
    "T:LibreMetaverse.Messages.Linden.AgentStateUpdateMessage",
    "T:LibreMetaverse.Messages.Linden.BulkUpdateInventoryMessage",
    "T:LibreMetaverse.Messages.Linden.BulkUpdateInventoryMessage.FolderDataInfo",
    "T:LibreMetaverse.Messages.Linden.BulkUpdateInventoryMessage.ItemDataInfo",
    "T:LibreMetaverse.Messages.Linden.ChatSessionAcceptInvitation",
    "T:LibreMetaverse.Messages.Linden.ChatSessionRequestBlock",
    "T:LibreMetaverse.Messages.Linden.ChatSessionRequestMuteUpdate",
    "T:LibreMetaverse.Messages.Linden.ChatSessionRequestStartConference",
    "T:LibreMetaverse.Messages.Linden.ChatterBoxInvitationMessage",
    "T:LibreMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage",
    "T:LibreMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock",
    "T:LibreMetaverse.Messages.Linden.ChatterBoxSessionStartReplyMessage",
    "T:LibreMetaverse.Messages.Linden.ChatterboxSessionEventReplyMessage",
    "T:LibreMetaverse.Messages.Linden.CopyInventoryFromNotecardMessage",
    "T:LibreMetaverse.Messages.Linden.CrossedRegionMessage",
    "T:LibreMetaverse.Messages.Linden.DirLandReplyMessage",
    "T:LibreMetaverse.Messages.Linden.DirLandReplyMessage.QueryReply",
    "T:LibreMetaverse.Messages.Linden.EnableSimulatorMessage",
    "T:LibreMetaverse.Messages.Linden.EnableSimulatorMessage.SimulatorInfoBlock",
    "T:LibreMetaverse.Messages.Linden.EstablishAgentCommunicationMessage",
    "T:LibreMetaverse.Messages.Linden.ForceCloseChatterBoxSessionMessage",
    "T:LibreMetaverse.Messages.Linden.GetDisplayNamesMessage",
    "T:LibreMetaverse.Messages.Linden.GetObjectCostMessage",
    "T:LibreMetaverse.Messages.Linden.GetObjectCostRequest",
    "T:LibreMetaverse.Messages.Linden.LandResourcesMessage",
    "T:LibreMetaverse.Messages.Linden.LandResourcesRequest",
    "T:LibreMetaverse.Messages.Linden.LandStatReplyMessage",
    "T:LibreMetaverse.Messages.Linden.LandStatReplyMessage.ReportDataBlock",
    "T:LibreMetaverse.Messages.Linden.MapLayerMessageBase",
    "T:LibreMetaverse.Messages.Linden.MapLayerReplyVariant",
    "T:LibreMetaverse.Messages.Linden.MapLayerReplyVariant.LayerData",
    "T:LibreMetaverse.Messages.Linden.NavMeshStatusUpdateMessage",
    "T:LibreMetaverse.Messages.Linden.ObjectMediaNavigateMessage",
    "T:LibreMetaverse.Messages.Linden.ObjectMediaRequest",
    "T:LibreMetaverse.Messages.Linden.ObjectMediaResponse",
    "T:LibreMetaverse.Messages.Linden.ObjectMediaUpdate",
    "T:LibreMetaverse.Messages.Linden.ObjectPhysicsPropertiesMessage",
    "T:LibreMetaverse.Messages.Linden.ParcelObjectOwnersReplyMessage",
    "T:LibreMetaverse.Messages.Linden.ParcelObjectOwnersReplyMessage.PrimOwner",
    "T:LibreMetaverse.Messages.Linden.ParcelPropertiesMessage",
    "T:LibreMetaverse.Messages.Linden.ParcelPropertiesUpdateMessage",
    "T:LibreMetaverse.Messages.Linden.ParcelVoiceInfoRequestMessage",
    "T:LibreMetaverse.Messages.Linden.PlacesReplyMessage",
    "T:LibreMetaverse.Messages.Linden.PlacesReplyMessage.QueryData",
    "T:LibreMetaverse.Messages.Linden.ProvisionVoiceAccountRequestMessage",
    "T:LibreMetaverse.Messages.Linden.RemoteParcelRequestReply",
    "T:LibreMetaverse.Messages.Linden.RegionInfoMessage",
    "T:LibreMetaverse.Messages.Linden.RenderMaterialsMessage",
    "T:LibreMetaverse.Messages.Linden.RequiredVoiceVersionMessage",
    "T:LibreMetaverse.Messages.Linden.ScriptRunningReplyMessage",
    "T:LibreMetaverse.Messages.Linden.SearchStatRequestReply",
    "T:LibreMetaverse.Messages.Linden.SearchStatRequestRequest",
    "T:LibreMetaverse.Messages.Linden.SendPostcardMessage",
    "T:LibreMetaverse.Messages.Linden.SetDisplayNameMessage",
    "T:LibreMetaverse.Messages.Linden.SetDisplayNameReplyMessage",
    "T:LibreMetaverse.Messages.Linden.DisplayNameUpdateMessage",
    "T:LibreMetaverse.Messages.Linden.SimConsoleResponseMessage",
    "T:LibreMetaverse.Messages.Linden.TeleportFailedMessage",
    "T:LibreMetaverse.Messages.Linden.TeleportFinishMessage",
    "T:LibreMetaverse.Messages.Linden.UpdateAgentInformationMessage",
    "T:LibreMetaverse.Messages.Linden.UpdateAgentInventoryRequestMessage",
    "T:LibreMetaverse.Messages.Linden.UpdateAgentLanguageMessage",
    "T:LibreMetaverse.Messages.Linden.UpdateScriptAgentRequestMessage",
    "T:LibreMetaverse.Messages.Linden.UpdateScriptTaskUpdateMessage",
    "T:LibreMetaverse.Messages.Linden.UploaderRequestComplete",
    "T:LibreMetaverse.Messages.Linden.UploaderRequestUpload",
    "T:LibreMetaverse.Messages.Linden.ViewerStatsMessage",
}
OPEN_ENUM_IDS = {"T:LibreMetaverse.BakeType", "T:LibreMetaverse.HoleType"}
TRAIT_SUPERTRAITS = {
    "T:LibreMetaverse.IBakingTextureProvider": "std::any::Any + Send + Sync",
    "T:LibreMetaverse.Interfaces.IMessage": "std::any::Any",
    "T:LibreMetaverse.Appearance.ICurrentOutfitPolicy": "Send + Sync",
    "T:LibreMetaverse.RLV.IRlvActionCallbacks": "Send + Sync",
    "T:LibreMetaverse.RLV.IRlvQueryCallbacks": "Send + Sync",
}
CORE_NAMESPACES = (
    "LibreMetaverse.Http",
    "LibreMetaverse.Stats",
    "LibreMetaverse.Threading",
)
CORE_ROOT_TYPES = {
    "T:LibreMetaverse.CapabilitiesReceivedEventArgs",
    "T:LibreMetaverse.Caps",
    "T:LibreMetaverse.Caps.EventQueueCallback",
    "T:LibreMetaverse.CapsCategory",
    "T:LibreMetaverse.CapsEventDictionary",
    "T:LibreMetaverse.CapsRateLimiter",
    "T:LibreMetaverse.CapsRateLimiterOptions",
    "T:LibreMetaverse.ConnectionSettings",
    "T:LibreMetaverse.DisconnectedEventArgs",
    "T:LibreMetaverse.DisposalHelper.DisposalGuard",
    "T:LibreMetaverse.DisposalHelper",
    "T:LibreMetaverse.EventQueueRunningEventArgs",
    "T:LibreMetaverse.EventSubscription`1",
    "T:LibreMetaverse.EventSubscriptionHelper",
    "T:LibreMetaverse.FileHelper",
    "T:LibreMetaverse.DictionaryChangeCallback",
    "T:LibreMetaverse.DictionaryEventAction",
    "T:LibreMetaverse.GenericStreamingMessageEventArgs",
    "T:LibreMetaverse.GenericStreamingMethod",
    "T:LibreMetaverse.GridClient",
    "T:LibreMetaverse.GridClientBakingTextureProvider",
    "T:LibreMetaverse.GridClientServiceCollectionExtensions",
    "T:LibreMetaverse.Helpers",
    "T:LibreMetaverse.HomeInfo",
    "T:LibreMetaverse.HttpCapsClient",
    "T:LibreMetaverse.IBakingTextureProvider",
    "T:LibreMetaverse.IGridClient",
    "T:LibreMetaverse.ImageCodec",
    "T:LibreMetaverse.ImageDownload",
    "T:LibreMetaverse.ImageReceiveProgressEventArgs",
    "T:LibreMetaverse.ImageRequest",
    "T:LibreMetaverse.ImageType",
    "T:LibreMetaverse.IncomingPacketIDCollection",
    "T:LibreMetaverse.Interfaces.IByteBufferPool",
    "T:LibreMetaverse.Logger",
    "T:LibreMetaverse.Logger.LogCallback",
    "T:LibreMetaverse.LoggingSettings",
    "T:LibreMetaverse.LoginCredential",
    "T:LibreMetaverse.LoginException",
    "T:LibreMetaverse.LoginParams",
    "T:LibreMetaverse.LoginProgressEventArgs",
    "T:LibreMetaverse.LoginResponseData",
    "T:LibreMetaverse.LoginResponseData.ParseMessage",
    "T:LibreMetaverse.LoginResponseData.ParseMessageLevel",
    "T:LibreMetaverse.LoginResponseData.ParseResult",
    "T:LibreMetaverse.LoginState",
    "T:LibreMetaverse.LoginStatus",
    "T:LibreMetaverse.LoggedOutEventArgs",
    "T:LibreMetaverse.NetworkManager",
    "T:LibreMetaverse.NetworkManager.DisconnectType",
    "T:LibreMetaverse.NetworkManager.IncomingPacket",
    "T:LibreMetaverse.NetworkManager.LoginResponseCallback",
    "T:LibreMetaverse.NetworkManager.OutgoingPacket",
    "T:LibreMetaverse.LastExecStatus",
    "T:LibreMetaverse.ObservableDictionary`2",
    "T:LibreMetaverse.PacketEventDictionary",
    "T:LibreMetaverse.PacketReceivedEventArgs",
    "T:LibreMetaverse.PacketSentEventArgs",
    "T:LibreMetaverse.PacketSettings",
    "T:LibreMetaverse.HttpCapsClient.ProgressReport",
    "T:LibreMetaverse.ProtocolManager",
    "T:LibreMetaverse.Repeat",
    "T:LibreMetaverse.Settings",
    "T:LibreMetaverse.SimChangedEventArgs",
    "T:LibreMetaverse.SimConnectedEventArgs",
    "T:LibreMetaverse.SimConnectingEventArgs",
    "T:LibreMetaverse.SimDisconnectedEventArgs",
    "T:LibreMetaverse.Simulator",
    "T:LibreMetaverse.Simulator.SimStats",
    "T:LibreMetaverse.SimulatorDataPool",
    "T:LibreMetaverse.SimulatorFeatures",
    "T:LibreMetaverse.SourceType",
    "T:LibreMetaverse.StatusCode",
    "T:LibreMetaverse.TargetType",
    "T:LibreMetaverse.TexturePipeline",
    "T:LibreMetaverse.TexturePipelineSettings",
    "T:LibreMetaverse.TextureRequestState",
    "T:LibreMetaverse.TimingSettings",
    "T:LibreMetaverse.Transfer",
    "T:LibreMetaverse.TransferError",
    "T:LibreMetaverse.UDPBase",
    "T:LibreMetaverse.UDPPacketBuffer",
    "T:LibreMetaverse.XferDownload",
    "T:LibreMetaverse.XferReceivedEventArgs",
}
AVATAR_NAMESPACES = (
    "LibreMetaverse.Animesh",
    "LibreMetaverse.Appearance",
)
AVATAR_TYPE_PREFIXES = (
    "T:LibreMetaverse.Agent",
    "T:LibreMetaverse.Animations",
    "T:LibreMetaverse.AnimeshSkinning",
    "T:LibreMetaverse.Appearance",
    "T:LibreMetaverse.ArchetypeParam",
    "T:LibreMetaverse.Asset",
    "T:LibreMetaverse.Attention",
    "T:LibreMetaverse.Avatar",
    "T:LibreMetaverse.Inventory",
)
AVATAR_ROOT_TYPES = {
    "T:LibreMetaverse.AISResponseMeta",
    "T:LibreMetaverse.AccountLevelBenefits",
    "T:LibreMetaverse.AlertMessageEventArgs",
    "T:LibreMetaverse.BakeType",
    "T:LibreMetaverse.BalanceEventArgs",
    "T:LibreMetaverse.BinBVHAnimationReader",
    "T:LibreMetaverse.BorderCrossingDirection",
    "T:LibreMetaverse.CallingCardOfferedEventArgs",
    "T:LibreMetaverse.CameraConstraintEventArgs",
    "T:LibreMetaverse.ChannelType",
    "T:LibreMetaverse.ChatAudibleLevel",
    "T:LibreMetaverse.ChatEventArgs",
    "T:LibreMetaverse.ChatSessionMember",
    "T:LibreMetaverse.ChatSessionMemberAddedEventArgs",
    "T:LibreMetaverse.ChatSessionMemberLeftEventArgs",
    "T:LibreMetaverse.ChatSourceType",
    "T:LibreMetaverse.ChatType",
    "T:LibreMetaverse.ClassifiedAd",
    "T:LibreMetaverse.ClassifiedInfoReplyEventArgs",
    "T:LibreMetaverse.DeRezDestination",
    "T:LibreMetaverse.DisplayNameUpdateEventArgs",
    "T:LibreMetaverse.DrivenParamInfo",
    "T:LibreMetaverse.EffectType",
    "T:LibreMetaverse.ExperienceInfoEventArgs",
    "T:LibreMetaverse.ExperiencePreferencesEventArgs",
    "T:LibreMetaverse.FindObjectByPathReplyEventArgs",
    "T:LibreMetaverse.FolderUpdatedEventArgs",
    "T:LibreMetaverse.Genepool",
    "T:LibreMetaverse.GenepoolArchetype",
    "T:LibreMetaverse.GroupChatJoinedEventArgs",
    "T:LibreMetaverse.HandPose",
    "T:LibreMetaverse.InitiateDownloadEventArgs",
    "T:LibreMetaverse.InstantMessage",
    "T:LibreMetaverse.InstantMessageDialog",
    "T:LibreMetaverse.InstantMessageEventArgs",
    "T:LibreMetaverse.InstantMessageOnline",
    "T:LibreMetaverse.ItemReceivedEventArgs",
    "T:LibreMetaverse.LindenAttentions",
    "T:LibreMetaverse.LoadUrlEventArgs",
    "T:LibreMetaverse.LookAtType",
    "T:LibreMetaverse.MeanCollisionEventArgs",
    "T:LibreMetaverse.MeanCollisionType",
    "T:LibreMetaverse.MoneyBalanceReplyEventArgs",
    "T:LibreMetaverse.MoneyTransactionType",
    "T:LibreMetaverse.MuteEntry",
    "T:LibreMetaverse.MuteFlags",
    "T:LibreMetaverse.MuteType",
    "T:LibreMetaverse.NavMeshStatusUpdateEventArgs",
    "T:LibreMetaverse.PayPriceReplyEventArgs",
    "T:LibreMetaverse.PayPriceType",
    "T:LibreMetaverse.PickInfoReplyEventArgs",
    "T:LibreMetaverse.PointAtType",
    "T:LibreMetaverse.ProductInfoEventArgs",
    "T:LibreMetaverse.ProfileFlags",
    "T:LibreMetaverse.ProfilePick",
    "T:LibreMetaverse.RebakeAvatarTexturesEventArgs",
    "T:LibreMetaverse.RegionCrossedEventArgs",
    "T:LibreMetaverse.RegionCrossingPredictionEventArgs",
    "T:LibreMetaverse.RegionExperiencesEventArgs",
    "T:LibreMetaverse.SaveAssetToInventoryEventArgs",
    "T:LibreMetaverse.ScriptControlChange",
    "T:LibreMetaverse.ScriptControlEventArgs",
    "T:LibreMetaverse.ScriptDialogEventArgs",
    "T:LibreMetaverse.ScriptPermission",
    "T:LibreMetaverse.ScriptQuestionEventArgs",
    "T:LibreMetaverse.ScriptRunningReplyEventArgs",
    "T:LibreMetaverse.ScriptSensorReplyEventArgs",
    "T:LibreMetaverse.ScriptSensorTypeFlags",
    "T:LibreMetaverse.SetDisplayNameReplyEventArgs",
    "T:LibreMetaverse.SkeletalBoneInfo",
    "T:LibreMetaverse.TaskInventoryReplyEventArgs",
    "T:LibreMetaverse.TaskItemReceivedEventArgs",
    "T:LibreMetaverse.TeleportEventArgs",
    "T:LibreMetaverse.TeleportFlags",
    "T:LibreMetaverse.TeleportLureFlags",
    "T:LibreMetaverse.TeleportStatus",
    "T:LibreMetaverse.TransactionFlags",
    "T:LibreMetaverse.TransactionInfo",
    "T:LibreMetaverse.UUIDNameReplyEventArgs",
    "T:LibreMetaverse.ViewerBenefitsEventArgs",
    "T:LibreMetaverse.ViewerEffectEventArgs",
    "T:LibreMetaverse.ViewerEffectLookAtEventArgs",
    "T:LibreMetaverse.ViewerEffectPointAtEventArgs",
    "T:LibreMetaverse.VisualAlphaParam",
    "T:LibreMetaverse.VisualColorOperation",
    "T:LibreMetaverse.VisualColorParam",
    "T:LibreMetaverse.VisualParam",
    "T:LibreMetaverse.VisualParams",
    "T:LibreMetaverse.VolumeMorphInfo",
    "T:LibreMetaverse.binBVHJoint",
    "T:LibreMetaverse.binBVHJointKey",
}

UNDERLYING = {
    "System.SByte": "i8", "System.Byte": "u8", "System.Int16": "i16", "System.UInt16": "u16",
    "System.Int32": "i32", "System.UInt32": "u32", "System.Int64": "i64", "System.UInt64": "u64",
}

PRIVATE_LAYOUTS = {
    "T:LibreMetaverse.AvatarAppearanceEventArgs": [("stored_visual_params", "Vec<u8>")],
    "T:LibreMetaverse.CacheDictionary`2": [("entries", "std::collections::HashMap<TKey, TValue>")],
    "T:LibreMetaverse.DoubleDictionary`3": [
        ("by_first", "std::collections::HashMap<TKey1, TValue>"),
        ("by_second", "std::collections::HashMap<TKey2, TValue>"),
    ],
    "T:LibreMetaverse.EmptyRemovalStrategy`1": [("keys", "Vec<TKey>")],
    "T:LibreMetaverse.ExpiringCache`2": [("entries", "std::collections::HashMap<TKey, TValue>")],
    "T:LibreMetaverse.InventoryBase": [
        ("native_uuid", "libremetaverse_types::UUID"),
        ("native_owner_id", "libremetaverse_types::UUID"),
        ("native_parent_uuid", "libremetaverse_types::UUID"),
        ("native_name", "String"),
    ],
    "T:LibreMetaverse.InventoryFolder": [
        ("native_descendent_count", "i32"),
        ("native_preferred_type", "libremetaverse_types::FolderType"),
        ("native_version", "i32"),
    ],
    "T:LibreMetaverse.LruRemovalStrategy`1": [("keys", "Vec<TKey>")],
    "T:LibreMetaverse.MruRemovalStrategy`1": [("keys", "Vec<TKey>")],
    "T:LibreMetaverse.MultiValueDictionary`2": [("entries", "std::collections::HashMap<TKey, Vec<TValue>>")],
    "T:LibreMetaverse.TokenBucket": [("content", "i32"), ("max_burst", "i32"), ("drip_rate", "i32")],
    "T:LibreMetaverse.UUID": [("bytes", "[u8; 16]")],
    "T:LibreMetaverse.StructuredData.OSDArray": [("values", "Vec<OSD>")],
    "T:LibreMetaverse.StructuredData.OSDBinary": [("value", "Vec<u8>")],
    "T:LibreMetaverse.StructuredData.OSDBoolean": [("value", "bool")],
    "T:LibreMetaverse.StructuredData.OSDDate": [("value", "std::time::SystemTime")],
    "T:LibreMetaverse.StructuredData.OSDException": [("message", "String")],
    "T:LibreMetaverse.StructuredData.OSDInteger": [("value", "i32")],
    "T:LibreMetaverse.StructuredData.OSDMap": [("values", "std::collections::HashMap<String, OSD>")],
    "T:LibreMetaverse.StructuredData.OSDReal": [("value", "f64")],
    "T:LibreMetaverse.StructuredData.OSDString": [("value", "String")],
    "T:LibreMetaverse.StructuredData.OSDUUID": [("value", "libremetaverse_types::UUID")],
    "T:LibreMetaverse.StructuredData.OSDUri": [("value", "libremetaverse_types::compat::Uri")],
}
VALUE_DERIVES = {
    "T:LibreMetaverse.Avatar": "Clone",
    "T:LibreMetaverse.Avatar.Attachment": "Clone",
    "T:LibreMetaverse.Avatar.AvatarProperties": "Clone",
    "T:LibreMetaverse.Avatar.Interests": "Clone",
    "T:LibreMetaverse.Avatar.Statistics": "Clone",
    "T:LibreMetaverse.AgentSettings": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.AppearanceManager.WearableData": "Clone, Debug",
    "T:LibreMetaverse.AssetCacheSettings": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.BuddyListEntry": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.ConnectionSettings": "Clone, Eq, PartialEq",
    "T:LibreMetaverse.LoggingSettings": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.HomeInfo": "Clone, Copy, Debug, PartialEq",
    "T:LibreMetaverse.Group": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.GroupAccountSummary": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.GroupMember": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.GroupNotice": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.GroupNoticesListEntry": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.GroupProposal": "Clone, Debug, PartialEq",
    "T:LibreMetaverse.GroupRole": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.GroupTitle": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.InventoryBase": "Clone, Debug",
    "T:LibreMetaverse.InventoryFolder": "Clone, Debug",
    "T:LibreMetaverse.Matrix4": "Clone, Copy, Debug",
    "T:LibreMetaverse.NameValue": "Clone, Debug",
    "T:LibreMetaverse.Packets.ObjectUpdatePacket.ObjectDataBlock": "Clone, Debug",
    "T:LibreMetaverse.Quaternion": "Clone, Copy, Debug",
    "T:LibreMetaverse.PacketSettings": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.ParcelSettings": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.TexturePipelineSettings": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.TimingSettings": "Clone, Debug, Eq, PartialEq",
    "T:LibreMetaverse.UUID": "Clone, Copy, Debug, Default, Eq, Hash, PartialEq",
    "T:LibreMetaverse.Vector3": "Clone, Copy, Debug",
    "T:LibreMetaverse.Vector3d": "Clone, Copy, Debug",
    "T:LibreMetaverse.WorldSettings": "Clone, Debug, Eq, PartialEq",
}

# Native implementations occasionally need Rust-only bounds that have no
# direct C# metadata equivalent. C#'s `where T : class` permits returning a
# reference to the stored object; the Rust inventory store returns an owned
# value, so its generic compatibility accessors clone the concrete item.
NATIVE_MEMBER_BOUNDS = {
    "M:LibreMetaverse.Inventory.GetValueOrDefault``1(LibreMetaverse.UUID)": {
        "T": "T: Clone + 'static",
    },
    "M:LibreMetaverse.Inventory.TryGetValue``1(LibreMetaverse.UUID,``0@)": {
        "T": "T: Clone + 'static",
    },
}


def generic_names(item: dict) -> list[str]:
    return [parameter["name"] for parameter in item.get("generic_parameters", [])]


def format_rust(source: str) -> str:
    result = subprocess.run(
        ["rustfmt", "--edition", "2024", "--emit", "stdout"],
        input=source,
        text=True,
        capture_output=True,
        check=False,
    )
    if result.returncode:
        raise ValueError(result.stderr.strip())
    return result.stdout


def type_name(type_row: dict) -> str:
    return type_row["rust_path"].rsplit("::", 1)[-1]


def generic_suffix(names: list[str]) -> str:
    return "<" + ", ".join(names) + ">" if names else ""


def generic_declarations(item: dict, mapper: mapping.Mapper, owner_names: list[str]) -> list[str]:
    generics = set(owner_names) | set(generic_names(item))
    declarations = []
    for parameter in item.get("generic_parameters", []):
        bounds = [mapper.constraint(constraint, generics) for constraint in parameter.get("constraints", [])]
        if parameter.get("default_constructor"):
            bounds.append("Default")
        declarations.append(parameter["name"] + ((": " + " + ".join(bounds)) if bounds else ""))
    return declarations


def function_name(signature: str) -> str:
    match = re.search(r"\bfn ([A-Za-z_][A-Za-z0-9_]*)", signature)
    if not match:
        raise ValueError(f"invalid mapped function signature: {signature}")
    return match.group(1)


def render_compile_fixture(
    catalog: dict,
    type_by_id: dict[str, dict[str, str]],
    member_rows: dict[str, dict[str, str]],
    mapper: mapping.Mapper,
) -> str:
    lines = [
        "// @generated by tools/generate_api_shims.py; do not edit by hand.",
        "#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)]",
        "#![allow(non_camel_case_types, non_snake_case)]",
        "",
        'fn argument<T>() -> T { panic!("compile-only API fixture") }',
        "",
    ]
    type_index = member_index = 0
    for assembly in catalog["assemblies"]:
        for item in assembly["types"]:
            type_index += 1
            type_row = type_by_id[item["doc_id"]]
            owner_names = generic_names(item)
            owner_path = type_row["rust_path"]
            owner_type = owner_path + generic_suffix(owner_names)
            owner_expression = owner_path + (("::<" + ", ".join(owner_names) + ">") if owner_names else "")
            trait = item["kind"] == "interface"
            type_parameters = [*owner_names]
            if trait:
                type_parameters.append(f"__Probe: {owner_type}")
                type_argument = "&__Probe"
            else:
                type_argument = f"&{owner_type}"
            declarations = generic_suffix(type_parameters)
            lines += [
                f"// C# type: `{item['doc_id']}`.",
                f"fn type_{type_index:04}{declarations}(_: {type_argument}) {{}}",
                "",
            ]

            for member in item["members"]:
                member_index += 1
                row = member_rows[member["doc_id"]]
                method_names = generic_names(member)
                owner_bounds = NATIVE_OWNER_BOUNDS.get(item["doc_id"], {})
                parameters = [
                    *(owner_bounds.get(name, name) for name in owner_names),
                    *generic_declarations(member, mapper, owner_names),
                ]
                member_bounds = NATIVE_MEMBER_BOUNDS.get(member["doc_id"], {})
                parameters = [
                    member_bounds.get(parameter.split(":", 1)[0], parameter)
                    for parameter in parameters
                ]
                if member["doc_id"] == "M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)":
                    parameters = [
                        *owner_names,
                        "T: libremetaverse_types::EnumValueMetadata",
                    ]
                if trait:
                    parameters.append(f"__Probe: {owner_type}")
                declaration = generic_suffix(parameters)
                instance = not member.get("static") and member["kind"] not in {
                    "constructor",
                    "constant",
                    "enum_value",
                }
                value_parameter = (
                    f"value: &mut {'__Probe' if trait else owner_type}" if instance else ""
                )
                body = []
                if member["kind"] == "field" and not member.get("static"):
                    field = re.fullmatch(r"pub ([^:]+): .+", row["rust_signature"])
                    if not field:
                        raise ValueError(f"invalid mapped field signature: {row['rust_signature']}")
                    body.append(f"let _ = &value.{field.group(1)};")
                elif member["kind"] in {"constant", "enum_value"}:
                    pattern = r"pub const ([A-Za-z_][A-Za-z0-9_]*)" if member["kind"] == "constant" else r"([A-Za-z_][A-Za-z0-9_]*):"
                    name = re.match(pattern, row["rust_signature"])
                    if not name:
                        raise ValueError(f"invalid mapped value signature: {row['rust_signature']}")
                    body.append(f"let _ = {owner_expression}::{name.group(1)};")
                else:
                    signatures = row["rust_signature"].split(" ; ")
                    property_argument_counts = []
                    if member["kind"] in {"property", "indexer"}:
                        accessors = {accessor["kind"] for accessor in member.get("accessors", [])}
                        if "get" in accessors:
                            property_argument_counts.append(len(member.get("parameters", [])))
                        if "set" in accessors:
                            property_argument_counts.append(len(member.get("parameters", [])) + 1)
                    for signature_index, signature in enumerate(signatures):
                        name = function_name(signature)
                        generic_call = (("::<" + ", ".join(method_names) + ">") if method_names else "")
                        if instance:
                            target = f"value.{name}{generic_call}"
                        elif trait:
                            target = f"<__Probe as {owner_type}>::{name}{generic_call}"
                        else:
                            target = f"{owner_expression}::{name}{generic_call}"
                        argument_count = len(member.get("parameters", []))
                        if member["kind"] == "event":
                            argument_count = 1
                        elif property_argument_counts:
                            argument_count = property_argument_counts[signature_index]
                        arguments = ", ".join("argument()" for _ in range(argument_count))
                        body.append(f"let _ = {target}({arguments});")
                lines += [
                    f"// C# member: `{member['doc_id']}`.",
                    f"fn member_{member_index:05}{declaration}({value_parameter}) {{",
                    *[f"    {line}" for line in body],
                    "}",
                    "",
                ]
    return format_rust("\n".join(lines).rstrip() + "\n")


def flags_enum(item: dict) -> bool:
    return any(attribute["type"] == "System.FlagsAttribute" for attribute in item.get("attributes", []))


def duplicate_enum_values(item: dict) -> bool:
    values = [member["value"]["value"] for member in item["members"] if member["kind"] == "enum_value"]
    return len(values) != len(set(values))


def render_enum(item: dict, rust_name: str) -> list[str]:
    underlying = UNDERLYING[item["enum_underlying_type"]]
    values = [member for member in item["members"] if member["kind"] == "enum_value"]
    lines = [f"/// C# type: `{item['doc_id']}`."]
    if item["doc_id"] in OPEN_ENUM_IDS:
        lines += [
            "#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]",
            "#[repr(transparent)]",
            f"pub struct {rust_name}(pub {underlying});",
            "#[allow(non_upper_case_globals)]",
            f"impl {rust_name} {{",
        ]
        for member in values:
            lines += [
                f"    /// C# member: `{member['doc_id']}`.",
                f"    pub const {mapping.pascal(member['name'])}: Self = Self({member['value']['value']});",
            ]
        lines.append("}")
        return lines
    if flags_enum(item) or duplicate_enum_values(item):
        lines += [
            "#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]",
            "#[repr(transparent)]",
            f"pub struct {rust_name}(pub {underlying});",
            f"impl {rust_name} {{",
        ]
        for member in values:
            name = mapping.snake(member["name"]).upper()
            value = member["value"]["value"]
            lines += [f"    /// C# member: `{member['doc_id']}`.", f"    pub const {name}: Self = Self({value});"]
        lines.append("}")
        return lines
    lines += [
        "#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]",
        f"#[repr({underlying})]",
        f"pub enum {rust_name} {{",
    ]
    for member in values:
        lines += [f"    /// C# member: `{member['doc_id']}`.", f"    {mapping.pascal(member['name'])} = {member['value']['value']},"]
    lines.append("}")
    return lines


def native_member_body(member_id: str) -> str | None:
    body = NATIVE_MEMBER_BODIES.get(member_id)
    if body is not None:
        return body
    message_owner = "T:" + member_id[2:].split(".#ctor", 1)[0] if member_id.startswith("M:") and ".#ctor" in member_id else None
    if message_owner in NATIVE_MESSAGE_CODEC_TYPES:
        return "Ok(<Self as crate::message_codec::GeneratedMessage>::new_generated())"
    message_owner = "T:" + member_id[2:].rsplit(".Deserialize", 1)[0] if member_id.startswith("M:") and ".Deserialize(" in member_id else None
    if message_owner in NATIVE_MESSAGE_CODEC_TYPES:
        return "<Self as crate::message_codec::GeneratedMessage>::deserialize_generated(self, &map)"
    message_owner = "T:" + member_id[2:].rsplit(".Serialize", 1)[0] if member_id.startswith("M:") and member_id.endswith(".Serialize") else None
    if message_owner in NATIVE_MESSAGE_CODEC_TYPES:
        return "<Self as crate::message_codec::GeneratedMessage>::serialize_generated(self)"
    if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.#ctor", member_id):
        return "Ok(<Self as crate::packet_catalog::GeneratedPacket>::new_generated())"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.#ctor\(LibreMetaverse\.Packets\.Header,System\.Byte\[\],System\.Int32@\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedPacket>::new_from_header(head, &bytes, i)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.#ctor\(System\.Byte\[\],System\.Int32@\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedPacket>::new_from_bytes(&bytes, i)"
    if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.#ctor", member_id):
        return "Ok(<Self as crate::packet_catalog::GeneratedBlock>::new_generated())"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.#ctor\(System\.Byte\[\],System\.Int32@\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedBlock>::new_from_bytes(&bytes, i)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.FromBytes\(System\.Byte\[\],System\.Int32@\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedBlock>::decode_from_bytes(self, &bytes, i)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.ToBytes\(System\.Byte\[\],System\.Int32@\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedBlock>::encode_to_slice(self, bytes, i)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.FromOSD\(LibreMetaverse\.StructuredData\.OSDMap\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedBlock>::from_osd(self, &map)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.ToOSD",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedBlock>::to_osd(self)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.FromBytes\(LibreMetaverse\.Packets\.Header,System\.Byte\[\],System\.Int32@,System\.Int32@\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedPacket>::decode_from_header(self, header, &bytes, i, packet_end)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.FromBytes\(System\.Byte\[\],System\.Int32@,System\.Int32@,System\.Byte\[\]\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedPacket>::decode_from_bytes(self, &bytes, i, packet_end, zero_buffer)"
    if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytes", member_id):
        return "<Self as crate::packet_catalog::GeneratedPacket>::encode_packet(self)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.PacketFromOSD\(LibreMetaverse\.StructuredData\.OSDMap\)",
        member_id,
    ):
        return "<Self as crate::packet_catalog::GeneratedPacket>::packet_from_osd(self, &body)"
    if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.PacketToOSD", member_id):
        return "<Self as crate::packet_catalog::GeneratedPacket>::packet_to_osd(self)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytes\(LibreMetaverse\.Interfaces\.IByteBufferPool,System\.Int32@\)",
        member_id,
    ):
        return "{ let _ = pool; let bytes = <Self as crate::packet_catalog::GeneratedPacket>::encode_packet(self)?; *size = i32::try_from(bytes.len()).map_err(|_| crate::Error::Argument)?; Ok(bytes) }"
    if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytesMultiple", member_id):
        return "<Self as crate::packet_catalog::GeneratedPacket>::encode_multiple(self)"
    if re.fullmatch(
        r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytesMultiple\(LibreMetaverse\.Interfaces\.IByteBufferPool,System\.Int32\[\]@\)",
        member_id,
    ):
        return "{ let _ = pool; let packets = <Self as crate::packet_catalog::GeneratedPacket>::encode_multiple(self)?; *sizes = packets.iter().map(|packet| i32::try_from(packet.len()).unwrap_or(i32::MAX)).collect(); Ok(packets) }"
    if re.fullmatch(r"P:LibreMetaverse\.Packets\.[^.]+Packet\.Length", member_id):
        return "<Self as crate::packet_catalog::GeneratedPacket>::generated_length(self)"
    if re.fullmatch(r"P:LibreMetaverse\.Packets\.[^.]+Packet\.UsesBufferPooling", member_id):
        return "<Self as crate::packet_catalog::GeneratedPacket>::USES_BUFFER_POOLING"
    if re.fullmatch(r"P:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.Length", member_id):
        return "<Self as crate::packet_catalog::GeneratedBlock>::generated_length(self)"
    if member_id == "M:LibreMetaverse.Packets.Packet.GetType(System.UInt16,LibreMetaverse.PacketFrequency)":
        return "Ok(crate::packet_catalog::packet_type(id, frequency))"
    if member_id == "M:LibreMetaverse.Packets.Packet.BuildPacket(LibreMetaverse.Packets.PacketType)":
        return "crate::packet_catalog::build_packet(type_)"
    if member_id in {
        "M:LibreMetaverse.Packets.Packet.BuildPacket(System.String,LibreMetaverse.StructuredData.OSDMap)",
        "M:LibreMetaverse.Packets.Packet.BuildPacketFromOSD(System.String,LibreMetaverse.StructuredData.OSDMap)",
    }:
        return "crate::packet_catalog::build_packet_from_osd(&caps_event_name, &body)"
    if member_id == "M:LibreMetaverse.Packets.Packet.BuildPacket(System.Byte[],System.Int32@,System.Byte[])":
        return "{ let mut zero_buffer = zero_buffer; crate::packet_wire::build_packet_from_bytes(&packet_buffer, packet_end, &mut zero_buffer) }"
    if member_id == "M:LibreMetaverse.Packets.Header.BuildHeader(System.Byte[],System.Int32@,System.Int32@)":
        return "crate::packet_wire::decode_header(&bytes, pos, packet_end)"
    if member_id == "M:LibreMetaverse.Packets.Header.FromBytes(System.Byte[],System.Int32@,System.Int32@)":
        return "{ *self = crate::packet_wire::decode_header(&bytes, pos, packet_end)?; Ok(()) }"
    if member_id == "M:LibreMetaverse.Packets.Header.ToBytes(System.Byte[],System.Int32@)":
        return "crate::packet_wire::header_to_slice(self, bytes, i)"
    if member_id == "M:LibreMetaverse.Packets.Header.AcksToBytes(System.Byte[],System.Int32@)":
        return "crate::packet_wire::acks_to_slice(self, bytes, i)"
    if member_id == "M:LibreMetaverse.Packets.Packet.PacketFromOSD(LibreMetaverse.StructuredData.OSDMap)":
        return "crate::packet_catalog::ignore_packet_osd(&osd)"
    if member_id == "M:LibreMetaverse.Packets.Packet.PacketToOSD":
        return "crate::packet_catalog::empty_packet_osd()"
    if member_id == "M:LibreMetaverse.Helpers.ZeroDecode(System.Byte[],System.Int32,System.Byte[])":
        return "crate::packet_wire::zero_decode(src, srclen, dest)"
    if member_id == "M:LibreMetaverse.Helpers.ZeroEncode(System.Byte[],System.Int32,System.Byte[])":
        return "crate::packet_wire::zero_encode(src, srclen, dest)"
    return None


def render_body(
    signature: str,
    member_id: str,
    error_model: str,
    asyncness: str,
    trait: bool,
    required_trait_method: bool = False,
) -> str:
    if trait:
        signature = signature.removeprefix("pub ")
    if required_trait_method:
        return f"    {signature};"
    if body := native_member_body(member_id):
        if any(f"LibreMetaverse.{owner}." in member_id for owner in CLIENT_CORE_NATIVE_OWNERS):
            marker = " /* native client-core implementation */"
        elif any(f"LibreMetaverse.{owner}." in member_id for owner in NETWORK_NATIVE_OWNERS):
            marker = " /* native network implementation */"
        else:
            marker = ""
        return f"    {signature} {{{marker} {body} }}"
    failure = (
        f"libremetaverse_types::not_implemented({json.dumps(member_id)})"
        if error_model.startswith("Result")
        else f"libremetaverse_types::unimplemented_api!({json.dumps(member_id)})"
    )
    if asyncness == "boxed_future" or "std::pin::Pin<Box<dyn std::future::Future" in signature:
        failure = f"Box::pin(async {{ {failure} }})"
    return f"    {signature} {{ {failure} }}"


def rust_constant_value(item: dict) -> str:
    value = item["value"]["value"]
    if item["type"] == "System.String":
        return json.dumps(value)
    if item["type"] == "System.Boolean":
        return value.lower()
    if item["type"] in {"System.Single", "System.Double"} and not any(
        marker in value.lower() for marker in (".", "e")
    ):
        return value + ".0"
    return value


def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str]], mapper: mapping.Mapper) -> str:
    rust_name = type_name(type_row)
    if native_path := NATIVE_TYPES.get(item["doc_id"]):
        lines = [f"/// C# type: `{item['doc_id']}`."]
        lines.extend(f"/// C# member: `{member['doc_id']}`." for member in item["members"])
        lines.append(f"pub use {native_path} as {rust_name};")
        return "\n".join(lines)
    if item["kind"] == "enum":
        return "\n".join(render_enum(item, rust_name))
    names = generic_names(item)
    suffix = generic_suffix(names)
    trait = item["kind"] == "interface"
    lines = [f"/// C# type: `{item['doc_id']}`."]
    if trait:
        supertrait = TRAIT_SUPERTRAITS.get(item["doc_id"])
        inheritance = f": {supertrait}" if supertrait else ""
        lines.append(f"pub trait {rust_name}{suffix}{inheritance} {{")
    else:
        fields = [member for member in item["members"] if member["kind"] == "field" and not member.get("static")]
        private_fields = PRIVATE_LAYOUTS.get(item["doc_id"], [])
        base_type = item.get("base_type") if item["doc_id"] in COMPOSED_BASE_TYPES else None
        native_declaration = NATIVE_DECLARATIONS.get(item["doc_id"])
        if native_declaration:
            lines.append(f"pub use {native_declaration} as {rust_name};")
            lines.extend(
                f"/// C# member: `{field['doc_id']}`."
                for field in fields
            )
        elif derives := VALUE_DERIVES.get(item["doc_id"]):
            lines.append(f"#[derive({derives})]")
        if native_declaration:
            pass
        elif item["doc_id"] == "T:LibreMetaverse.StructuredData.OSD":
            lines += [
                "#[non_exhaustive]",
                "pub enum OSD {",
                "    Undefined, Boolean(bool), Integer(i32), Real(f64), String(String),",
                "    UUID(libremetaverse_types::UUID), Date(std::time::SystemTime),",
                "    Uri(libremetaverse_types::compat::Uri), Binary(Vec<u8>),",
                "    Array(Vec<OSD>), Map(std::collections::HashMap<String, OSD>), LlsdXml(String),",
                "}",
            ]
        elif not fields and not names and not private_fields and not base_type:
            lines.append(f"pub struct {rust_name};")
        else:
            lines.append(f"pub struct {rust_name}{suffix} {{")
            if base_type:
                lines += [
                    f"    /// Rust composition for C# base type `{base_type}`.",
                    f"    pub base: {mapper.type(base_type, None, set(names))},",
                ]
            for field in fields:
                field_signature = member_rows[field["doc_id"]]["rust_signature"]
                field_name_match = re.fullmatch(r"pub ([^:]+): (.+)", field_signature)
                if not field_name_match:
                    raise ValueError(f"invalid mapped field signature: {field_signature}")
                field_name = field_name_match.group(1)
                field_type = field_name_match.group(2)
                lines += [f"    /// C# member: `{field['doc_id']}`.", f"    pub {field_name}: {field_type},"]
            for field_name, field_type in private_fields:
                lines.append(f"    {field_name}: {field_type},")
            if names:
                tuple_type = "(" + ", ".join(names) + ("," if len(names) == 1 else "") + ")"
                lines.append(f"    _marker: std::marker::PhantomData<{tuple_type}>,")
            lines.append("}")
        lines += [f"impl{suffix} {rust_name}{suffix} {{"]

    for member in item["members"]:
        if member["kind"] in {"enum_value"} or (member["kind"] == "field" and not member.get("static")):
            continue
        row = member_rows[member["doc_id"]]
        lines.append(f"    /// C# member: `{member['doc_id']}`.")
        if member["kind"] == "constant":
            lines.append(f"    {row['rust_signature']} = {rust_constant_value(member)};")
            continue
        signatures = row["rust_signature"].split(" ; ")
        for index, signature in enumerate(signatures):
            if index:
                lines.append(f"    /// Setter for C# member: `{member['doc_id']}`.")
            body_member_id = member["doc_id"]
            setter_id = body_member_id + "#set"
            if index and setter_id in NATIVE_MEMBER_BODIES:
                body_member_id = setter_id
            lines.append(
                render_body(
                    signature,
                    body_member_id,
                    row["error_model"],
                    row["asyncness"],
                    trait,
                    trait and item["doc_id"] in NATIVE_GENERATED_TYPES,
                )
            )
    lines.append("}")
    if not trait:
        for interface in item.get("interfaces", []):
            base, arguments, _ = mapping.type_parts(interface)
            if base not in mapper.interfaces or not base.startswith("LibreMetaverse."):
                continue
            # Native traits can have required methods. Their concrete adapters
            # provide explicit implementations beside the adapter code instead
            # of receiving an invalid empty generated impl.
            if f"T:{base}" in NATIVE_TYPES:
                continue
            if item["doc_id"] in NATIVE_DECLARATIONS:
                continue
            if item["doc_id"] == "T:LibreMetaverse.GridClient" and base == "LibreMetaverse.IGridClient":
                continue
            mapped_arguments = [mapper.type(argument, None, set(names)) for argument in arguments]
            trait_path = mapper.resolved[base] + generic_suffix(mapped_arguments)
            if (
                base == "LibreMetaverse.Interfaces.IMessage"
                and item["doc_id"] in NATIVE_MESSAGE_CODEC_TYPES
            ):
                lines += [
                    f"impl{suffix} {trait_path} for {rust_name}{suffix} {{",
                    "    fn deserialize(&mut self, map: libremetaverse_structured_data::OSDMap) -> Result<(), crate::Error> {",
                    "        <Self as crate::message_codec::GeneratedMessage>::deserialize_generated(self, &map)",
                    "    }",
                    "    fn serialize(&self) -> Result<libremetaverse_structured_data::OSDMap, crate::Error> {",
                    "        <Self as crate::message_codec::GeneratedMessage>::serialize_generated(self)",
                    "    }",
                    "}",
                ]
            else:
                lines.append(f"impl{suffix} {trait_path} for {rust_name}{suffix} {{}}")
    return "\n".join(lines)


def render_pending_type(item: dict, type_row: dict) -> str:
    rust_name = type_name(type_row)
    names = generic_names(item)
    suffix = generic_suffix(names)
    lines = [f"/// Pending catalog type `{item['doc_id']}`; completed by a later milestone issue."]
    if item["kind"] == "interface":
        lines.append(f"pub trait {rust_name}{suffix} {{}}")
    elif names:
        tuple_type = "(" + ", ".join(names) + ("," if len(names) == 1 else "") + ")"
        lines += [f"pub struct {rust_name}{suffix} {{", f"    _marker: std::marker::PhantomData<{tuple_type}>,", "}"]
    else:
        lines.append(f"pub struct {rust_name};")
    return "\n".join(lines)


def wire_type(item: dict) -> bool:
    return (
        item["doc_id"] in WIRE_ROOT_TYPES
        or item["doc_id"].startswith("T:LibreMetaverse.Primitive")
        or item["namespace"].startswith(WIRE_NAMESPACES)
    )


def core_type(item: dict) -> bool:
    return item["doc_id"] in CORE_ROOT_TYPES or item["namespace"].startswith(CORE_NAMESPACES)


def avatar_type(item: dict) -> bool:
    return (
        item["doc_id"] in AVATAR_ROOT_TYPES
        or item["doc_id"].startswith(AVATAR_TYPE_PREFIXES)
        or item["namespace"].startswith(AVATAR_NAMESPACES)
    )


def world_type(item: dict) -> bool:
    return not wire_type(item) and not core_type(item) and not avatar_type(item)


def render_modules(items: list[tuple[dict, dict, bool]], member_rows: dict[str, dict[str, str]], mapper: mapping.Mapper) -> str:
    tree: dict = {"items": [], "children": {}}
    for item, type_row, complete in items:
        node = tree
        for segment in filter(None, type_row["rust_module"].split("::")):
            node = node["children"].setdefault(segment, {"items": [], "children": {}})
        node["items"].append((item, type_row, complete))

    def render_node(node: dict) -> list[str]:
        lines = []
        for item, type_row, complete in node["items"]:
            rendered = render_type(item, type_row, member_rows, mapper) if complete else render_pending_type(item, type_row)
            lines += [rendered, ""]
        for name, child in sorted(node["children"].items()):
            body = render_node(child)
            lines.append(f"pub mod {name} {{")
            lines += [("    " + line) if line else "" for line in body]
            lines += ["}", ""]
        return lines

    return "\n".join(render_node(tree))


def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[int, int, bool]]]:
    type_rows, resolved = mapping.build_type_rows(catalog)
    type_by_id = {row["csharp_type_id"]: row for row in type_rows}
    member_by_id = {
        member["doc_id"]: member
        for assembly in catalog["assemblies"]
        for item in assembly["types"]
        for member in item["members"]
    }
    configured_main_ids = WIRE_ROOT_TYPES | CORE_ROOT_TYPES | AVATAR_ROOT_TYPES
    missing_configured_ids = configured_main_ids - type_by_id.keys()
    if missing_configured_ids:
        raise ValueError(f"unknown configured main-slice IDs: {sorted(missing_configured_ids)}")
    missing_boxed_fields = mapping.BOXED_FIELD_IDS - member_by_id.keys()
    if missing_boxed_fields:
        raise ValueError(f"unknown configured boxed fields: {sorted(missing_boxed_fields)}")
    if invalid_boxed_fields := [
        member_id
        for member_id in mapping.BOXED_FIELD_IDS
        if member_by_id[member_id]["kind"] != "field"
    ]:
        raise ValueError(f"configured boxed members are not fields: {sorted(invalid_boxed_fields)}")
    interfaces = {
        *{mapping.type_parts(item["signature"])[0] for assembly in catalog["assemblies"] for item in assembly["types"] if item["kind"] == "interface"},
        *{
            mapping.type_parts(item["signature"])[0]
            for item in catalog["external_types"]
            if item["kind"] == "interface" and not item["assembly"]["name"].startswith("System")
        },
    }
    mapper = mapping.Mapper(resolved, interfaces)
    member_rows = {row["csharp_id"]: row for row in csv.DictReader(LEDGER.open(), delimiter="\t")}
    outputs = {}
    coverage = {}
    for assembly in catalog["assemblies"]:
        name = assembly["identity"]["name"]
        if name not in TARGETS and name != "LibreMetaverse":
            continue
        chunks = [
            "// @generated by tools/generate_api_shims.py; do not edit by hand.",
            "#![allow(clippy::missing_errors_doc)]",
            "#![allow(clippy::must_use_candidate)]",
            "#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)]",
            "#![allow(non_camel_case_types)]",
            "#![allow(non_snake_case)]",
            "",
        ]
        selected = (
            assembly["types"]
            if name in TARGETS
            else [
                item
                for item in assembly["types"]
                if wire_type(item) or core_type(item) or avatar_type(item) or world_type(item)
            ]
        )
        selected_ids = {item["doc_id"] for item in selected}
        rendered_items = [
            (item, type_by_id[item["doc_id"]], item["doc_id"] in selected_ids)
            for item in assembly["types"]
        ]
        chunks.append(render_modules(rendered_items, member_rows, mapper))
        source = format_rust("\n".join(chunks).rstrip() + "\n")
        expected_types = selected_ids
        expected_members = {member["doc_id"] for item in selected for member in item["members"]}
        emitted_types = set(re.findall(r"C# type: `(.*)`\.", source))
        emitted_members = set(re.findall(r"C# member: `(.*)`\.", source))
        if emitted_types != expected_types or emitted_members != expected_members:
            raise ValueError(
                f"generated catalog ID mismatch for {name}: "
                f"types missing/stale={len(expected_types - emitted_types)}/{len(emitted_types - expected_types)}, "
                f"members missing/stale={len(expected_members - emitted_members)}/{len(emitted_members - expected_members)}; "
                f"missing={sorted(expected_members - emitted_members)}, stale={sorted(emitted_members - expected_members)}"
            )
        outputs[TARGETS.get(name, MAIN_TARGET)] = source
        coverage[name] = (len(selected), sum(len(item["members"]) for item in selected), len(selected) == len(assembly["types"]))
    outputs[COMPILE_FIXTURE] = render_compile_fixture(catalog, type_by_id, member_rows, mapper)
    return outputs, coverage


def coverage_report(catalog: dict, coverage: dict[str, tuple[int, int, bool]]) -> str:
    lines = [
        "# Callable shim coverage", "", "Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.", "",
        "| Assembly | Types | Members | Status |", "|---|---:|---:|---|",
    ]
    total_types = total_members = 0
    for assembly in catalog["assemblies"]:
        name = assembly["identity"]["name"]
        types = len(assembly["types"])
        members = sum(len(item["members"]) for item in assembly["types"])
        if name in coverage:
            got_types, got_members, complete = coverage[name]
            if complete and (types, members) != (got_types, got_members):
                raise ValueError(f"incomplete generated slice for {name}")
            native_type_ids = {
                item["doc_id"]
                for item in assembly["types"]
                if item["doc_id"] in NATIVE_TYPES
                or item["doc_id"] in NATIVE_DECLARATIONS
                or item["doc_id"] in NATIVE_GENERATED_TYPES
                or (name == "LibreMetaverse.Types" and item["kind"] == "enum")
            }
            native_member_ids = {
                member["doc_id"]
                for item in assembly["types"]
                for member in item["members"]
                if item["doc_id"] in NATIVE_TYPES
                or item["doc_id"] in NATIVE_GENERATED_TYPES
                or (name == "LibreMetaverse.Types" and item["kind"] == "enum")
                or (
                    item["doc_id"] in NATIVE_DECLARATIONS
                    and member["kind"] == "field"
                    and not member.get("static")
                )
                or (
                    item["doc_id"] in NATIVE_DECLARATIONS
                    and member["kind"] == "constant"
                )
                or native_member_body(member["doc_id"]) is not None
            }
            if native_type_ids or native_member_ids:
                type_noun = "type" if len(native_type_ids) == 1 else "types"
                if len(native_member_ids) == members:
                    status = (
                        f"native implementation: {len(native_type_ids):,} {type_noun} / "
                        f"{len(native_member_ids):,} members; no generated shims remain"
                    )
                else:
                    status = (
                        f"native implementation: {len(native_type_ids):,} {type_noun} / "
                        f"{len(native_member_ids):,} members; remaining surface is callable failure-only shims"
                    )
            else:
                status = "callable failure-only shim" if complete else f"partial callable shim ({got_types:,} types / {got_members:,} members)"
            total_types += got_types
            total_members += got_members
        else:
            status = "pending milestone issue"
        lines.append(f"| `{name}` | {types:,} | {members:,} | {status} |")
    if "LibreMetaverse" in coverage:
        main_types = next(
            assembly["types"]
            for assembly in catalog["assemblies"]
            if assembly["identity"]["name"] == "LibreMetaverse"
        )
        wire_types = [item for item in main_types if wire_type(item)]
        core_types = [item for item in main_types if core_type(item) and not wire_type(item)]
        avatar_types = [
            item
            for item in main_types
            if avatar_type(item) and not wire_type(item) and not core_type(item)
        ]
        world_types = [item for item in main_types if world_type(item)]
        complete = coverage["LibreMetaverse"][2]
        lines += [
            "",
            (
                "The `LibreMetaverse` assembly is complete across issue #7 wire/data, issue #8 core runtime/networking,"
                if complete
                else "The partial `LibreMetaverse` row contains the completed issue #7 wire/data, issue #8 core runtime/networking,"
            ),
            (
                "issue #9 avatar-facing manager, and issue #10 world/social/service manager slices."
                if complete
                else "and issue #9 avatar-facing manager slices. World/social/service manager types remain pending for issue #10."
            ),
            "",
            "| Main assembly slice | Types | Members |",
            "|---|---:|---:|",
            f"| Issue #7 wire/data | {len(wire_types):,} | {sum(len(item['members']) for item in wire_types):,} |",
            f"| Issue #8 core runtime/networking | {len(core_types):,} | {sum(len(item['members']) for item in core_types):,} |",
            f"| Issue #9 avatar-facing managers | {len(avatar_types):,} | {sum(len(item['members']) for item in avatar_types):,} |",
            f"| Issue #10 world/social/service managers | {len(world_types):,} | {sum(len(item['members']) for item in world_types):,} |",
        ]
    lines += ["", f"Current callable coverage: **{total_types:,} types / {total_members:,} members**.", ""]
    return "\n".join(lines)


def generate() -> dict[Path, str]:
    catalog = json.loads(CATALOG.read_text())
    sources, coverage = generate_sources(catalog)
    sources[COVERAGE] = coverage_report(catalog, coverage)
    return sources


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--check", action="store_true")
    args = parser.parse_args()
    outputs = generate()
    if args.check:
        stale = [str(path.relative_to(ROOT)) for path, text in outputs.items() if not path.exists() or path.read_text() != text]
        if stale:
            raise SystemExit("stale generated API shims: " + ", ".join(stale))
    else:
        for path, text in outputs.items():
            path.write_text(text)
        print("generated " + ", ".join(str(path.relative_to(ROOT)) for path in outputs))


if __name__ == "__main__":
    main()
