public IBoard PlacePiece(Intersection intersection, Piece p) { var newSettlements = new Dictionary<Intersection, Piece>(settlements); newSettlements[intersection] = p; return new Board(terrain, new Dictionary<Edge, int>(roads), newSettlements, robberLocation, harbors, allIntersections, allEdges); }