diff --git a/include/core/SkTextBlob.h b/include/core/SkTextBlob.h
index 98e49e1..7f882cf 100644
--- a/include/core/SkTextBlob.h
+++ b/include/core/SkTextBlob.h
@@ -380,16 +380,16 @@
     // RunBuffer.pos points to SkRSXform array
     const RunBuffer& allocRunRSXform(const SkFont& font, int count);
 
-private:
     const RunBuffer& allocRunText(const SkFont& font, int count, SkScalar x, SkScalar y,
                                   int textByteCount, const SkRect* bounds = nullptr);
     const RunBuffer& allocRunTextPosH(const SkFont& font, int count, SkScalar y, int textByteCount,
                                       const SkRect* bounds = nullptr);
     const RunBuffer& allocRunTextPos(const SkFont& font, int count, int textByteCount,
                                      const SkRect* bounds = nullptr);
-    const RunBuffer& allocRunRSXform(const SkFont& font, int count, int textByteCount,
-                                     const SkRect* bounds = nullptr);
+    const RunBuffer& allocRunTextRSXform(const SkFont& font, int count, int textByteCount,
+                                         const SkRect* bounds = nullptr);
 
+private:
     void reserve(size_t size);
     void allocInternal(const SkFont& font, SkTextBlob::GlyphPositioning positioning,
                        int count, int textBytes, SkPoint offset, const SkRect* bounds);
diff --git a/modules/skplaintexteditor/src/shape.cpp b/modules/skplaintexteditor/src/shape.cpp
index b42fcf5..eccccbe 100644
--- a/modules/skplaintexteditor/src/shape.cpp
+++ b/modules/skplaintexteditor/src/shape.cpp
@@ -113,8 +113,7 @@
     int glyphCount = SkTFitsIn<int>(info.glyphCount) ? info.glyphCount : INT_MAX;
     int utf8RangeSize = SkTFitsIn<int>(info.utf8Range.size()) ? info.utf8Range.size() : INT_MAX;
 
-    const auto& runBuffer = SkTextBlobBuilderPriv::AllocRunTextPos(&fBuilder, info.fFont, glyphCount,
-                                                                   utf8RangeSize);
+    const auto& runBuffer = fBuilder.allocRunTextPos(info.fFont, glyphCount, utf8RangeSize);
     fCurrentGlyphs = runBuffer.glyphs;
     fCurrentPoints = runBuffer.points();
 
diff --git a/modules/skshaper/src/SkShaper.cpp b/modules/skshaper/src/SkShaper.cpp
index 8672906..ac07a3d 100644
--- a/modules/skshaper/src/SkShaper.cpp
+++ b/modules/skshaper/src/SkShaper.cpp
@@ -225,8 +225,7 @@
     int glyphCount = SkTFitsIn<int>(info.glyphCount) ? info.glyphCount : INT_MAX;
     int utf8RangeSize = SkTFitsIn<int>(info.utf8Range.size()) ? info.utf8Range.size() : INT_MAX;
 
-    const auto& runBuffer = SkTextBlobBuilderPriv::AllocRunTextPos(&fBuilder, info.fFont, glyphCount,
-                                                                   utf8RangeSize);
+    const auto& runBuffer = fBuilder.allocRunTextPos(info.fFont, glyphCount, utf8RangeSize);
     if (runBuffer.utf8text && fUtf8Text) {
         memcpy(runBuffer.utf8text, fUtf8Text + info.utf8Range.begin(), utf8RangeSize);
     }
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp
index dba6c30..181341e 100644
--- a/src/core/SkTextBlob.cpp
+++ b/src/core/SkTextBlob.cpp
@@ -589,10 +589,10 @@
     return fCurrentRunBuffer;
 }
 
-const SkTextBlobBuilder::RunBuffer& SkTextBlobBuilder::allocRunRSXform(const SkFont& font,
-                                                                       int count,
-                                                                       int textByteCount,
-                                                                       const SkRect* bounds) {
+const SkTextBlobBuilder::RunBuffer& SkTextBlobBuilder::allocRunTextRSXform(const SkFont& font,
+                                                                           int count,
+                                                                           int textByteCount,
+                                                                           const SkRect *bounds) {
     this->allocInternal(font,
                         SkTextBlob::kRSXform_Positioning,
                         count,
@@ -747,7 +747,7 @@
                 buf = &blobBuilder.allocRunTextPos(font, glyphCount, textSize, &bounds);
                 break;
             case SkTextBlob::kRSXform_Positioning:
-                buf = &blobBuilder.allocRunRSXform(font, glyphCount, textSize, &bounds);
+                buf = &blobBuilder.allocRunTextRSXform(font, glyphCount, textSize, &bounds);
                 break;
         }
 
diff --git a/src/core/SkTextBlobPriv.h b/src/core/SkTextBlobPriv.h
index 1403c5c..db2a994 100644
--- a/src/core/SkTextBlobPriv.h
+++ b/src/core/SkTextBlobPriv.h
@@ -39,30 +39,6 @@
     static sk_sp<SkTextBlob> MakeFromBuffer(SkReadBuffer&);
 };
 
-class SkTextBlobBuilderPriv {
-public:
-    static const SkTextBlobBuilder::RunBuffer& AllocRunText(SkTextBlobBuilder* builder,
-            const SkFont& font, int count, SkScalar x, SkScalar y, int textByteCount,
-            const SkRect* bounds = nullptr) {
-        return builder->allocRunText(font, count, x, y, textByteCount, bounds);
-    }
-    static const SkTextBlobBuilder::RunBuffer& AllocRunTextPosH(SkTextBlobBuilder* builder,
-            const SkFont& font, int count, SkScalar y, int textByteCount,
-            const SkRect* bounds = nullptr) {
-        return builder->allocRunTextPosH(font, count, y, textByteCount, bounds);
-    }
-    static const SkTextBlobBuilder::RunBuffer& AllocRunTextPos(SkTextBlobBuilder* builder,
-            const SkFont& font, int count, int textByteCount,
-            const SkRect* bounds = nullptr) {
-        return builder->allocRunTextPos(font, count, textByteCount, bounds);
-    }
-    static const SkTextBlobBuilder::RunBuffer& AllocRunRSXForm(SkTextBlobBuilder* builder,
-            const SkFont& font, int count, int textByteCount,
-            const SkRect* bounds = nullptr) {
-        return builder->allocRunRSXform(font, count, textByteCount, bounds);
-    }
-};
-
 //
 // Textblob data is laid out into externally-managed storage as follows:
 //
diff --git a/tests/TextBlobTest.cpp b/tests/TextBlobTest.cpp
index f84690f..f5c5b8c 100644
--- a/tests/TextBlobTest.cpp
+++ b/tests/TextBlobTest.cpp
@@ -323,8 +323,7 @@
     SkAutoTMalloc<uint16_t> glyphs(glyphCount);
     (void)font.textToGlyphs(text1, strlen(text1), SkTextEncoding::kUTF8, glyphs.get(), glyphCount);
 
-    auto run = SkTextBlobBuilderPriv::AllocRunText(&textBlobBuilder,
-            font, glyphCount, 0, 0, SkToInt(strlen(text2)), nullptr);
+    auto run = textBlobBuilder.allocRunText(font, glyphCount, 0, 0, SkToInt(strlen(text2)));
     memcpy(run.glyphs, glyphs.get(), sizeof(uint16_t) * glyphCount);
     memcpy(run.utf8text, text2, strlen(text2));
     for (int i = 0; i < glyphCount; ++i) {
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index d7068a3..18af842 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -1278,17 +1278,15 @@
 
             const SkTextBlobBuilder::RunBuffer& runBuffer
                 = it.positioning() == SkTextBlobRunIterator::kDefault_Positioning
-                    ? SkTextBlobBuilderPriv::AllocRunText(&builder, font,
-                        it.glyphCount(), it.offset().x(),it.offset().y(), it.textSize())
+                    ? builder.allocRunText(font, it.glyphCount(), it.offset().x(),it.offset().y(),
+                                           it.textSize())
                 : it.positioning() == SkTextBlobRunIterator::kHorizontal_Positioning
-                    ? SkTextBlobBuilderPriv::AllocRunTextPosH(&builder, font,
-                        it.glyphCount(), it.offset().y(), it.textSize())
+                    ? builder.allocRunTextPosH(font, it.glyphCount(), it.offset().y(),
+                                               it.textSize())
                 : it.positioning() == SkTextBlobRunIterator::kFull_Positioning
-                    ? SkTextBlobBuilderPriv::AllocRunTextPos(&builder, font,
-                        it.glyphCount(), it.textSize())
+                    ? builder.allocRunTextPos(font, it.glyphCount(), it.textSize())
                 : it.positioning() == SkTextBlobRunIterator::kRSXform_Positioning
-                    ? SkTextBlobBuilderPriv::AllocRunRSXForm(&builder, font,
-                        it.glyphCount(), it.textSize())
+                    ? builder.allocRunTextRSXform(font, it.glyphCount(), it.textSize())
                 : (SkASSERT_RELEASE(false), SkTextBlobBuilder::RunBuffer());
             uint32_t glyphCount = it.glyphCount();
             if (it.glyphs()) {
