Create <TInstanceSource, TFeatureSource>(
            IMatchboxRecommenderMapping <TInstanceSource, TFeatureSource> mapping)
        {
            if (mapping == null)
            {
                throw new ArgumentNullException("mapping");
            }

            return(new NativeDataFormatMatchboxRecommender <TInstanceSource, TFeatureSource>(mapping));
        }
        LoadBackwardCompatible <TInstanceSource, TFeatureSource>(
            Stream stream, IMatchboxRecommenderMapping <TInstanceSource, TFeatureSource> mapping)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            using (var reader = new BinaryReader(stream, Encoding.UTF8, true))
            {
                return(LoadBackwardCompatible(reader, mapping));
            }
        }
        LoadBackwardCompatible <TInstanceSource, TFeatureSource>(
            string fileName, IMatchboxRecommenderMapping <TInstanceSource, TFeatureSource> mapping)
        {
            if (fileName == null)
            {
                throw new ArgumentNullException("fileName");
            }

            using (Stream stream = File.Open(fileName, FileMode.Open))
            {
                return(LoadBackwardCompatible(stream, mapping));
            }
        }
        LoadBackwardCompatible <TInstanceSource, TFeatureSource>(
            BinaryReader reader, IMatchboxRecommenderMapping <TInstanceSource, TFeatureSource> mapping)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (mapping == null)
            {
                throw new ArgumentNullException("mapping");
            }

            return(new NativeDataFormatMatchboxRecommender <TInstanceSource, TFeatureSource>(reader, mapping));
        }