public static T GetEntry <T>(Window owner, IMEPackage pcc, string directionsText = null, Predicate <T> predicate = null) where T : class, IEntry
        {
            SupportedTypes supportedInputTypes = SupportedTypes.ExportsAndImports;

            if (typeof(T) == typeof(ExportEntry))
            {
                supportedInputTypes = SupportedTypes.Exports;
            }
            else if (typeof(T) == typeof(ImportEntry))
            {
                supportedInputTypes = SupportedTypes.Imports;
            }

            Predicate <IEntry> entryPredicate = null;

            if (predicate != null)
            {
                entryPredicate = entry => predicate((T)entry);
            }
            using var dlg = new EntrySelector(owner, pcc, supportedInputTypes, directionsText, entryPredicate);
            if (dlg.ShowDialog() == true)
            {
                return(dlg.ChosenEntry as T);
            }

            return(null);
        }
        public static IEntry GetEntry(Window owner, IMEPackage pcc, SupportedTypes supportedInputTypes, string directionsText = null)
        {
            var dlg = new EntrySelector(owner, pcc, supportedInputTypes, directionsText);

            return(dlg.ShowDialog() == true ? dlg.ChosenEntry : null);
        }