public Intersection[] GetAdjacentIntersections(Edge edge) { var n1 = GetAdjacentTiles(edge.FirstTile); return GetAdjacentTiles(edge.SecondTile) .Where(t => n1.Contains(t)) .Where(t => IsLegalEdge(edge) || GetTile(t).Terrain != Terrain.Water) .Select(t => new Intersection(edge.FirstTile, edge.SecondTile, t)) .ToArray(); }