docs: protected void mergeVerticalBlocks() {
          for(int i = 0; i < rectangles.size() - 1; i++) {
              for(int j = i + 1; j < rectangles.size(); j++) {
                  Rectangle2D.Double firstRect = rectangles.get(i);
                  Rectangle2D.Double secondRect = rectangles.get(j);
                  if (roughlyEqual(firstRect.x, secondRect.x) && roughlyEqual(firstRect.width, secondRect.width)) {
                      if (roughlyEqual(firstRect.y + firstRect.height, secondRect.y)) {
                          firstRect.height += secondRect.height;
                          rectangles.set(i, firstRect);
                          rectangles.remove(j);
                      }
                  }
              }
          }
      }