public Edge[] GetAllEdges()
{
if(allEdges == null){
HashSet<Edge> result = new HashSet<Edge>();
for (int i = 0; i < 45; i++)
{
this.GetAdjacentTiles(i).Where(j => this.IsLegalEdge(new Edge(i, j))).ForEach(j => result.Add(new Edge(i, j)));
}
allEdges = result.ToArray();
}
return allEdges.ToArray();
}