private List<FrameworkElement> RenderCell(MapCellState cell, Rect cellArea)
        {
            List<FrameworkElement> result = new List<FrameworkElement>();
            if (cell == null) return result;

            result.Add(RenderPlace(cell.Place, cellArea));
            result.Add(RenderWall(cell.GetWall(MapDirection.South), cellArea));
            result.Add(RenderWall(cell.GetWall(MapDirection.West), cellArea));
            result.Add(RenderWall(cell.GetWall(MapDirection.North), cellArea));
            result.Add(RenderWall(cell.GetWall(MapDirection.East), cellArea));
            result.Add(RenderWallCorner(cell.GetWall(MapDirection.North), cell.GetWall(MapDirection.West), cellArea));
            result.Add(RenderWallCorner(cell.GetWall(MapDirection.North), cell.GetWall(MapDirection.East), cellArea));
            result.Add(RenderWallCorner(cell.GetWall(MapDirection.South), cell.GetWall(MapDirection.West), cellArea));
            result.Add(RenderWallCorner(cell.GetWall(MapDirection.South), cell.GetWall(MapDirection.East), cellArea));

            while (result.Remove(null));

            return result;
        }