for (HomePieceOfFurniture piece : getVisibleDoorsAndWindows(this.home.getFurniture())) {
if (piece.getElevation() < maxWallHeight) {
Shape pieceShape = getShape(piece.getPoints());
Area pieceArea = new Area(pieceShape);
Area intersectionArea = new Area(wallShape);
intersectionArea.intersect(pieceArea);
if (!intersectionArea.isEmpty()) {
windowIntersections.add(new DoorOrWindowArea(intersectionArea, Arrays.asList(new HomePieceOfFurniture [] {piece})));
// Remove from wall area the piece shape
wallArea.subtract(pieceArea);
}