protected override void AddAppInternal(AppEntry prototype, Converter<FeedUri, Feed> feedRetriever)
{
#region Sanity checks
if (prototype == null) throw new ArgumentNullException(nameof(prototype));
if (feedRetriever == null) throw new ArgumentNullException(nameof(feedRetriever));
#endregion
var appEntry = prototype.Clone();
AppList.Entries.Add(appEntry);
WriteAppDir(appEntry);
if (appEntry.AccessPoints != null)
AddAccessPointsInternal(appEntry, feedRetriever(appEntry.InterfaceUri), appEntry.AccessPoints.Clone().Entries);
}