diff --git a/samplecode/SampleParagraph.cpp b/samplecode/SampleParagraph.cpp
index fc04bb2..60d3494 100644
--- a/samplecode/SampleParagraph.cpp
+++ b/samplecode/SampleParagraph.cpp
@@ -2491,8 +2491,8 @@
     SkString name() override { return SkString("Paragraph37"); }
 
     void onDrawContent(SkCanvas* canvas) override {
-
-        const char* text = "ছোৈূোঌ";
+        const char* text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaয়ৠঝোণ৺ঢ়মৈবৗৗঘথফড়৭২খসঢ়ৃঢ়ঁ৷থডঈঽলবনদ২ৢৃঀজঝ৩ঠ৪৫৯০ঌয়্মওৗ৲গখদ৹ঈ৴৹ঢ়ৄএৡফণহলঈ৲থজোৱে ঀকৰঀষজঝঃাখশঽএমংি";
+                //"ৎৣ়ৎঽতঃ৳্ৱব৴ৣঈ৷ূঁঢঢ়শটডৎ৵৵ৰৃ্দংঊাথৗদঊউদ৯ঐৃধা৬হওধি়৭ঽম৯স০ঢফৈঢ়কষঁছফীআে৶ৰ৶ঌৌঊ্ঊঝএঀঃদঞ৮তব৬ৄঊঙঢ়ৡগ৶৹৹ঌড়ঘৄ৷লপ১ভড়৶েঢ়৯ৎকনংট২ংএঢৌৌঐনো০টঽুৠগআ৷৭৩৬তো৻ঈ০ূসষঅঝআমণঔা১ণৈো৵চঽ৩বমৎঙঘ২ঠৠৈী৫তঌণচ৲ঔী৮ঘৰঔ";
          canvas->drawColor(SK_ColorWHITE);
 
         auto fontCollection = sk_make_sp<FontCollection>();
@@ -2510,6 +2510,27 @@
         auto paragraph = builder.Build();
         auto w = width() / 2;
         paragraph->layout(w);
+        auto impl = static_cast<ParagraphImpl*>(paragraph.get());
+
+        auto clusters = impl->clusters();
+        size_t c = 0;
+        SkDebugf("clusters\n");
+        for (auto& cluster: clusters) {
+          SkDebugf(""
+                   "%d: [%d:%d) %s\n", c++,
+              cluster.textRange().start, cluster.textRange().end,
+              cluster.isSoftBreak() ? "soft" :
+                cluster.isHardBreak() ? "hard" :
+                  cluster.isWhitespaces() ? "spaces" : ""
+              );
+        }
+        auto lines = impl->lines();
+        size_t i = 0;
+        SkDebugf("lines\n");
+        for (auto& line : lines) {
+          SkDebugf("%d: [%d:%d)\n", i++, line.trimmedText().start, line.trimmedText().end);
+        }
+
         paragraph->paint(canvas, 0, 0);
     }
 
@@ -2517,7 +2538,6 @@
     typedef Sample INHERITED;
 };
 
-//"\U0001f469\u200D\U0001f469\u200D\U0001f466\U0001f469\u200D\U0001f469\u200D\U0001f467\u200D\U0001f467\U0001f1fa\U0001f1f8"
 //////////////////////////////////////////////////////////////////////////////
 DEF_SAMPLE(return new ParagraphView1();)
 DEF_SAMPLE(return new ParagraphView2();)
