private float paintLineLayoutWithEffect(
     Graphics2D g,
     LineLayout layout,
     float x,
     float y,
     @Nullable Color effectColor,
     @Nullable EffectType effectType) {
   float initialX = x;
   for (LineLayout.VisualFragment fragment : layout.getFragmentsInVisualOrder(x)) {
     fragment.draw(g, x, y);
     x = fragment.getEndX();
   }
   if (hasTextEffect(effectColor, effectType)) {
     paintTextEffect(g, initialX, x, (int) y, effectColor, effectType);
   }
   return x;
 }