Inheritance: InstallableContent, ICollectionContent, IUninstallableContent
 private async Task<Content> HandleRepoContent(CollectionVersionDependencyModel x, Collection col,
     IReadOnlyCollection<CustomRepo> customRepos, Game game) {
     var repo = customRepos.FirstOrDefault(r => r.HasMod(x.Dependency));
     if (repo == null)
         return null;
     var repoContent = repo.GetMod(x.Dependency);
     var mod = new ModRepoContent(x.Dependency, col.GameId, repoContent.Value.GetVersionInfo());
     if (repoContent.Value.Dependencies != null)
         mod.Dependencies = await GetDependencyTree(repoContent, customRepos, game).ConfigureAwait(false);
     return mod;
 }
 private async Task<Content> ConvertToGroupOrRepoContent(CollectionVersionDependencyModel x, Collection col,
     IReadOnlyCollection<CustomRepo> customRepos, IEnumerable<GroupContent> groupContent, Game game) {
     var gc =
         groupContent.FirstOrDefault(
             c => c.PackageName.Equals(x.Dependency, StringComparison.CurrentCultureIgnoreCase));
     if (gc != null)
         // TODO: dependencies etc
         return new ModNetworkGroupContent(gc.Id, gc.PackageName, gc.GameId, gc.Version);
     return await HandleRepoContent(x, col, customRepos, game).ConfigureAwait(false);
 }