private List<GutterArea> createNewUILayout() {
    List<GutterArea> annotationAreas = List.of(
      area(ANNOTATIONS_AREA, EditorGutterComponentImpl.EMPTY_ANNOTATION_AREA_WIDTH::get)
        .as(EditorMouseEventArea.ANNOTATIONS_AREA)
        .showIf(() -> myEditorGutter.myTextAnnotationGuttersSize == 0 && myEditorGutter.isLineMarkersShown()),
      areaGap()
        .as(EditorMouseEventArea.ANNOTATIONS_AREA)
        .showIf(() -> myEditorGutter.isShowGapAfterAnnotations() && myEditorGutter.isLineMarkersShown()),
      area(ANNOTATIONS_AREA, () -> myEditorGutter.myTextAnnotationGuttersSize)
        .as(EditorMouseEventArea.ANNOTATIONS_AREA)
        .showIf(() -> myEditorGutter.myTextAnnotationGuttersSize != 0),
      //areaGap(1)
      //  .showIf(() -> myEditorGutter.getLeftFreePaintersAreaWidth() + myEditorGutter.getRightFreePaintersAreaWidth() > 0 && myEditorGutter.isLineMarkersShown()),
      area(EXTRA_LEFT_FREE_PAINTERS_AREA, myEditorGutter::getExtraLeftFreePaintersAreaWidth)
        .showIf(() -> myEditorGutter.isLineMarkersShown()),
      area(GAP_BETWEEN_AREAS, EditorGutterComponentImpl.GAP_AFTER_VCS_MARKERS_WIDTH::get)
        .as(EditorMouseEventArea.LINE_MARKERS_AREA)
        .showIf(() -> myEditorGutter.getExtraLeftFreePaintersAreaWidth() > 0 && myEditorGutter.isLineMarkersShown())
    );

    List<GutterArea> lineNumbersAreas = List.of(
      //areaGap(4).as(EditorMouseEventArea.LINE_NUMBERS_AREA).showIf(this::isLineNumbersShown),
      area(LINE_NUMBERS_AREA, () -> myEditorGutter.myLineNumberAreaWidth)
        .showIf(this::isLineNumbersShown),
      areaGap(12)
        .showIf(() -> isLineNumbersShown() && !myEditorGutter.isLineMarkersShown()),
      area(ADDITIONAL_LINE_NUMBERS_AREA, () -> myEditorGutter.myAdditionalLineNumberAreaWidth)
        .showIf(this::isLineNumbersShown),
      area(ADDITIONAL_LINE_NUMBERS_AREA, () -> {
        // Note: ADDITIONAL_LINE_NUMBERS_AREA rendering depends on this gap
        return Math.max(myEditorGutter.isLineMarkersShown() ? EditorGutterComponentImpl.GAP_AFTER_LINE_NUMBERS_WIDTH.get() : 0,
                        myEditorGutter.myAdditionalLineNumberAreaWidth > 0 ? getGapBetweenAreas() : 0);
      })
        .showIf(() -> isLineNumbersShown())
    );

    List<GutterArea> iconRelatedAreas = List.of(
      area(ANNOTATIONS_AREA, () -> myEditorGutter.myTextAnnotationExtraSize)
        .as(EditorMouseEventArea.LINE_MARKERS_AREA)
        .showIf(() -> myEditorGutter.myTextAnnotationExtraSize != 0),
      area(LEFT_FREE_PAINTERS_AREA, myEditorGutter::getLeftFreePaintersAreaWidth).showIf(myEditorGutter::isLineMarkersShown),
      area(ICONS_AREA, myEditorGutter::getIconsAreaWidth).showIf(myEditorGutter::isLineMarkersShown),
      area(GAP_AFTER_ICONS_AREA, myEditorGutter::getGapAfterIconsArea).showIf(myEditorGutter::isLineMarkersShown)
    );

    List<GutterArea> rightEdgeAreas = List.of(
      area(RIGHT_FREE_PAINTERS_AREA, myEditorGutter::getRightFreePaintersAreaWidth).showIf(myEditorGutter::isLineMarkersShown),
      area(FOLDING_AREA, myEditorGutter::getFoldingAreaWidth),
      areaGap(3).showIf(() -> myEditorGutter.isLineMarkersShown())
    );

    List<GutterArea> layout;

    if (isLineNumbersAfterIcons()) {
      layout = new ArrayList<>(annotationAreas);
      layout.addAll(iconRelatedAreas);
      layout.addAll(lineNumbersAreas);
      layout.addAll(rightEdgeAreas);
    } else {
      layout = new ArrayList<>(annotationAreas);
      layout.addAll(lineNumbersAreas);
      layout.addAll(iconRelatedAreas);
      layout.addAll(rightEdgeAreas);
    }

    return layout;
  }
private List<GutterArea> createNewUILayout()