// TODO: This should be part of the IDeterministicIdentifiers api.
        static string GenerateSceneInternalFileName(this IDeterministicIdentifiers generator, string scenePath)
        {
            // 1 scene per bundle, so don't worry about special cases
            var internalName = generator.GenerateInternalFileName(scenePath);

            return($"{internalName}.sharedAssets");
        }
        // TODO: This should be part of the IDeterministicIdentifiers api.
        static string GenerateAssetBundleInternalFileName(this IDeterministicIdentifiers generator, GUID guid)
        {
            var guidString   = guid.ToString();
            var internalName = generator.GenerateInternalFileName(guidString);

            return($"archive:/{internalName}/{internalName}");
        }
        static WriteCommand CreateWriteCommand(string internalName, List <ObjectIdentifier> objects, IDeterministicIdentifiers packingMethod)
        {
            var command = new WriteCommand();

            command.internalName = internalName;
            command.fileName     = Path.GetFileName(internalName);

            command.serializeObjects = objects.Select(x => new SerializationInfo
            {
                serializationObject = x,
                serializationIndex  = packingMethod.SerializationIndexFromObjectIdentifier(x)
            }).ToList();
            return(command);
        }
        static string GenerateAssetBundleInternalFileName(this IDeterministicIdentifiers generator, string name)
        {
            var internalName = generator.GenerateInternalFileName(name);

            return($"archive:/{internalName}/{internalName}");
        }