/// <summary>
        /// Initialize an instance to calculate path details.
        /// </summary>
        /// <param name="map">Has to be at least 1x1.</param>
        /// <exception cref="ArgumentOutOfRangeException">
        /// <see cref="Map.Width"/> or <see cref="Map.Height"/> is less than 1.</exception>
        public PathGenerator(Map map, BuilderRules rules)
        {
            if (map.Width < 1)
            {
                throw new ArgumentOutOfRangeException($"{nameof(map.Width)} has to be at least 1.");
            }

            if (map.Height < 1)
            {
                throw new ArgumentOutOfRangeException($"{nameof(map.Height)} has to be at least 1.");
            }

            _map = map;

            int rowCount = (int)Math.Pow(Math.Max(map.Width, map.Height), 3);

            _results = new Path[rowCount];

            _nearestPillars = new NearestPillars(_map);
            _rules          = rules;
        }
 static BuilderViewModel()
 {
     _rules = new BuilderRules();
 }