/// <summary>
        /// The operation to calculate metrics for saved and presented shapes.
        /// </summary>
        /// <param name="options">The options object which contains extra information
        /// which helps during the exeuction of this modus.</param>
        public static void Start(MeasureOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            Logger.Log(I_StartProc_Measure);
            // Load in new shapes to measure.
            if (options.HasDirectories)
            {
                foreach (string dir in options.ShapeDirectories)
                {
                    Settings.FileManager.AddDirectoryDirect(dir);
                }
            }
            // Perform metric calculations.
            IRecordHolder <MeshEntry> recordHolder = MetricCalculator;

            recordHolder.TakeSnapShot(Settings.MeshLibrary);
            // Save results to external file.
            SaveMetrics(recordHolder);
            // Notify the user of the refined shapes.
            Logger.Log(I_ShapeCount, Settings.MeshLibrary.Count);
            Logger.Log(I_EndProc_Measure);
        }
        /// <summary>
        /// The operation to evaluate the result of a query.
        /// </summary>
        /// <param name="options">The options object which contains extra information
        /// which helps during the exeuction of this modus.</param>
        public static void Start(EvaluateOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            Logger.Log(I_StartProc_Evaluate);

            IRecordHolder <QueryResult> records = EvaluationCalculator;

            QueryResult[] results = QueryHandler.LoadQueryResults(options.ShouldImport);
            records.TakeSnapShot(results);

            IRecordHolder holder = null;

            switch (options.EvaluationMode)
            {
            case EvaluationMode.Individual:
                holder = records;
                break;

            case EvaluationMode.Aggregated:
                holder = RecordMerger.Merge(records);
                break;
            }

            if (options.ShouldExport)
            {
                SaveEvaluation(holder);
            }

            Logger.Log(I_EndProc_Evaluate);
        }