// !исправить! возможно нужны изменения
        // Возвращает все значения параметра анализа p из тех сборок,
        // для которых значения параметров генерации соответсвуют данным значениям (values).
        // (из сборок выбранных по имени модели).
        public override List<string> GetOptionParameterValues(Dictionary<GenerationParam, string> values,
            AnalyzeOptionParam p)
        {
            List<string> result = new List<string>();
            foreach (string resultName in assembliesID)
            {
                ResultAssembly r = resultStorage.Load(assemblies.Find(i => i.Name == resultName).ID);
                Dictionary<GenerationParam, string>.KeyCollection gKeys = values.Keys;
                bool b = true;
                foreach (GenerationParam key in gKeys)
                {
                    if (r.GenerationParams.Count != 0)
                        b = b && (r.GenerationParams[key].ToString() == values[key]);
                    else
                    {
                        b = false;
                        break;
                    }
                }
                if (b)
                {
                    result.Add(r.AnalyzeOptionParams[p].ToString());
                }
            }

            result.Sort();
            result = result.Distinct().ToList();
            return result;
        }
 // !исправить! возможно нужны изменения
 // Возвращает все значения параметра анализа p из тех сборок,
 // для которых значения параметров генерации соответсвуют данным значениям (values).
 // (из сборок выбранных по имени модели).
 public override List<string> GetOptionParameterValues(Dictionary<GenerationParam, string> values, 
     AnalyzeOptionParam p)
 {
     Dictionary<int, string> idValues = new Dictionary<int, string>();
     foreach (GenerationParam param in values.Keys)
     {
         idValues.Add((int)param, values[param]);
     }
     return this.storage.GetOptionParameterValuesByID(AvailableModels.models[this.modelName],
         idValues, (int)p);
 }
 // Передача значений некоторых свойств анализа для job-а в сессии с данным именем.
 public static void SetAnalyzeOptionValue(string jobName, AnalyzeOptionParam optName, object value)
 {
     log.Info("Setting analyze option values for a job in the session.");
     session[jobName].AnalyzeOptionValues[optName] = value;
 }
 // !исправить! возможно нужны изменения
 // Возвращает все значения параметра анализа p из тех сборок,
 // для которых значения параметров генерации соответсвуют данным значениям (values).
 // (из сборок выбранных по имени модели).
 public abstract List<string> GetOptionParameterValues(Dictionary<GenerationParam, string> values,
     AnalyzeOptionParam p);