protected override YAMLMappingNode ExportYAMLRoot(IExportContainer container)
        {
            YAMLMappingNode node = new YAMLMappingNode();

            if (HasInternalIDToNameTable(container.ExportVersion))
            {
                if (IncludesIDToName)
                {
                    node.Add(InternalIDToNameTableName, InternalIDToNameTable.ExportYAML((t) => (int)t));
                }
            }
            else if (FileIDToRecycleNameRelevant(container.ExportVersion))
            {
                if (!IsFileIDToRecycleNameConditional(container.ExportVersion) || IncludesIDToName)
                {
                    node.Add(FileIDToRecycleNameName, FileIDToRecycleName.ExportYAML());
                }
            }
            if (HasExternalObjects(container.ExportVersion))
            {
                node.Add(ExternalObjectsName, ExternalObjects.ExportYAML(container));
            }
            if (HasUsedFileIDs(container.ExportVersion))
            {
                node.Add(UsedFileIDsName, UsedFileIDs.ExportYAML(false));
            }
            if (HasPreview(container.ExportVersion))
            {
                node.Add(PreviewName, Preview.ExportYAML(container));
            }
            if (HasHash(container.ExportVersion))
            {
                node.Add(OldHashIdentityName, OldHashIdentity.ExportYAML(container));
                node.Add(NewHashIdentityName, NewHashIdentity.ExportYAML(container));
            }
            return(node);
        }