public void Generate()
 {
     while (!AllVisited())
     {
         if (CurrentCell.HaveAnUnvisitedNeighbour(Cells))
         {
             History.Push(CurrentCell);
             CurrentCell = CurrentCell.GetRandomNeighbour(Cells);
         }
     }
 }