public static MazeMap New()
        {
            var map = new MazeMap();

            map.ForEachHex <TerrainGridHex, MazeMap>(hex => hex.IfHasValueDo(h => h.SetCosts <TerrainGridHex>(c => map[c])));
            map.ResetLandmarks();
            return(map);
        }
        public async static Task <MazeMap> NewAsync()
        {
            var map = new MazeMap();

            map.ForEachHex <TerrainGridHex, MazeMap>(hex => hex.IfHasValueDo(h => h.SetCosts <TerrainGridHex>(c => map[c])));
            await map.ResetLandmarksAsync();

            return(map);
        }