private IEnumerable <ProgressBarReport> ExportAssetsAtPath(string assetPath, PrefabContext prefabContext)
        {
            if (string.IsNullOrWhiteSpace(assetPath))
            {
                yield break;
            }
            if (_cancellationToken.IsCancellationRequested)
            {
                yield break;
            }
            if (!_visitedAssetPaths.Add(assetPath))
            {
                yield break;
            }
            if (!File.Exists(assetPath) && !Directory.Exists(assetPath))
            {
                yield break;
            }
            var attrs = File.GetAttributes(assetPath);

            if (attrs.HasFlag(FileAttributes.Directory))
            {
                foreach (var guid in AssetDatabase.FindAssets("", new[] { assetPath }))
                {
                    EditorTaskScheduler.Default.ScheduleForegroundTask(() =>
                                                                       ExportAssetsAtPath(AssetDatabase.GUIDToAssetPath(guid), prefabContext));
                }
                yield break;
            }

            yield return("Loading " + assetPath);

            var assets = ExportUtils.LoadAllAssetsAtPath(assetPath);

            yield return("Exporting " + assetPath);

            ExportAssetBlock(assetPath, AssetDatabase.GetMainAssetTypeAtPath(assetPath), assets, prefabContext);
        }