private ModelPageCollectorSet[] getModelPages(ModelCollectorSet modelSet, ITitleLinkPair model)
        {
            ModelPageDocumentRequestor mpDR     = new ModelPageDocumentRequestor(new WebRequestor(), $"{baseUrl}{model.Link}");
            ModelPageParser            mpParser = new ModelPageParser(mpDR);

            string[] modelPages = mpParser.Parse();

            List <ModelPageCollectorSet> modelPageSets = new List <ModelPageCollectorSet>();

            foreach (var modelPage in modelPages)
            {
                ModelPageCollectorSet modelPageSet = new ModelPageCollectorSet();

                ModelDetailDocumentRequestor mdDR     = new ModelDetailDocumentRequestor(new WebRequestor(), $"{baseUrl}{modelPage}");
                ModelDetailParser            mdParser = new ModelDetailParser(mdDR);
                ModelPageModel modelPageModel         = mdParser.Parse();
                modelPageSet.Data = mdDR;

                modelPageSet.Parent  = modelSet;
                modelPageSet.Subsets = getModelDetails(modelPageSet, modelPageModel);
                modelPageSets.Add(modelPageSet);
            }

            return(modelPageSets.ToArray());
        }
        private ModelCollectorSet[] getModels(ProducerCollectorSet producerSet, ITitleLinkPair producer)
        {
            ModelDocumentRequestor modelDR     = new ModelDocumentRequestor(new WebRequestor(), $"{baseUrl}{producer.Link}");
            ModelParser            modelParser = new ModelParser(modelDR);

            ITitleLinkPair[] models = modelParser.Parse();

            List <ModelCollectorSet> modelSets = new List <ModelCollectorSet>();

            foreach (var model in models)
            {
                ModelCollectorSet modelSet = new ModelCollectorSet();
                modelSet.Data    = model.Title;
                modelSet.Parent  = producerSet;
                modelSet.Subsets = getModelPages(modelSet, model);
                modelSets.Add(modelSet);
            }

            return(modelSets.ToArray());
        }
        private RowModel getRowModel(ModelPageModel modelPageModel, ModelPageCollectorSet modelPageSet)
        {
            ModelCollectorSet       modelSet    = (ModelCollectorSet)modelPageSet.Parent;
            ProducerCollectorSet    producerSet = (ProducerCollectorSet)modelSet.Parent;
            VehicleTypeCollectorSet vehicleType = (VehicleTypeCollectorSet)producerSet.Parent;

            RowModel rm = new RowModel();

            rm.VehicleType = vehicleType.Data;
            rm.Producer    = producerSet.Data;
            rm.Model       = modelSet.Data;
            rm.ModelType   = modelPageModel.ModelType;
            rm.MotorCode   = modelPageModel.MotorCode;
            rm.kW          = modelPageModel.kW;
            rm.PS          = modelPageModel.PS;
            rm.Year        = modelPageModel.Year;

            addFilters(modelPageSet, rm);

            return(rm);
        }