@SuppressWarnings("AssignmentToStaticFieldFromInstanceMethod")
  @Override
  public Consumer<Graphics2D> draw(float x, float y, int startColumn, int endColumn) {
    assert startColumn >= 0                    : assertMessage(x, y, startColumn, endColumn);
    assert endColumn <= myCharPositions.length : assertMessage(x, y, startColumn, endColumn);
    assert startColumn < endColumn             : assertMessage(x, y, startColumn, endColumn);

    return g -> {
      Color color = g.getColor();
      assert color != null;
      float newX = x - getX(startColumn) + getX(endColumn);
      if (lastFragment == this && lastEndColumn == startColumn && lastEndX == x && lastY == y && color.equals(lastColor)) {
        lastEndColumn = endColumn;
        lastEndX = newX;
        return;
      }

      flushDrawingCache(g);
      lastFragment = this;
      lastStartColumn = startColumn;
      lastEndColumn = endColumn;
      lastColor = color;
      lastStartX = x;
      lastEndX = newX;
      lastY = y;
    };
  }
@SuppressWarnings("AssignmentToStaticFieldFromInstanceMethod")
  @Override
  public Consumer<Graphics2D> draw(float x, float y, int startColumn, int endColumn)