Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'.

Mechanically updated via Xcode "Replace Regular Expression":

  typedef (.*) INHERITED;
    -->
  using INHERITED = $1;

The ClangTidy approach generated an even larger CL which would have
required a significant amount of hand-tweaking to be usable.

Change-Id: I671dc9d9efdf6d60151325c8d4d13fad7e10a15b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/314999
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index 4b69194..e6a6c18 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -280,6 +280,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new ClipCubicGM;)
diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp
index f5c05a2..c373841 100644
--- a/gm/aaxfermodes.cpp
+++ b/gm/aaxfermodes.cpp
@@ -280,6 +280,6 @@
     SkPath    fOval;
     SkPath    fConcave;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new AAXfermodesGM; )
diff --git a/gm/addarc.cpp b/gm/addarc.cpp
index b04bf21..f198222 100644
--- a/gm/addarc.cpp
+++ b/gm/addarc.cpp
@@ -69,7 +69,7 @@
 
 private:
     SkScalar fRotate;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new AddArcGM; )
 
@@ -154,7 +154,7 @@
 private:
     SkScalar fRotate;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new StrokeCircleGM; )
 
@@ -207,7 +207,7 @@
 private:
     SkScalar fRotate;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new FillCircleGM; )
 
diff --git a/gm/alphagradients.cpp b/gm/alphagradients.cpp
index b50c21c..52056f2 100644
--- a/gm/alphagradients.cpp
+++ b/gm/alphagradients.cpp
@@ -81,7 +81,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new AlphaGradientsGM;)
diff --git a/gm/analytic_gradients.cpp b/gm/analytic_gradients.cpp
index a96cbda..b2eac27 100644
--- a/gm/analytic_gradients.cpp
+++ b/gm/analytic_gradients.cpp
@@ -184,7 +184,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new AnalyticGradientShaderGM;)
diff --git a/gm/androidblendmodes.cpp b/gm/androidblendmodes.cpp
index 77003fb..0b7172b 100644
--- a/gm/androidblendmodes.cpp
+++ b/gm/androidblendmodes.cpp
@@ -127,7 +127,7 @@
     SkBitmap fCompositeSrc;
     SkBitmap fCompositeDst;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/animatedimageblurs.cpp b/gm/animatedimageblurs.cpp
index 90eb1d4..30cfbd5 100644
--- a/gm/animatedimageblurs.cpp
+++ b/gm/animatedimageblurs.cpp
@@ -138,7 +138,7 @@
     SkRandom fRand;
     SkScalar fLastTime;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/anisotropic.cpp b/gm/anisotropic.cpp
index 2304e51..5699fe6 100644
--- a/gm/anisotropic.cpp
+++ b/gm/anisotropic.cpp
@@ -115,7 +115,7 @@
     SkBitmap         fBM;
     SkFilterQuality  fFilterQuality;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/arcofzorro.cpp b/gm/arcofzorro.cpp
index 1eccca3..82e3723 100644
--- a/gm/arcofzorro.cpp
+++ b/gm/arcofzorro.cpp
@@ -81,7 +81,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp
index f835eb7..688c4a5 100644
--- a/gm/arithmode.cpp
+++ b/gm/arithmode.cpp
@@ -164,7 +164,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/badpaint.cpp b/gm/badpaint.cpp
index da7dbd5..399c3bd 100644
--- a/gm/badpaint.cpp
+++ b/gm/badpaint.cpp
@@ -56,7 +56,7 @@
 private:
     SkTArray<SkPaint> fPaints;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bc1_transparency.cpp b/gm/bc1_transparency.cpp
index a841433..5ff654f 100644
--- a/gm/bc1_transparency.cpp
+++ b/gm/bc1_transparency.cpp
@@ -210,7 +210,7 @@
     sk_sp<SkImage> fRGBImage;
     sk_sp<SkImage> fRGBAImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index 4b7c839..4f1baa0 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -135,7 +135,7 @@
     GrProcessorSet       fProcessorSet;
     GrProgramInfo*       fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 /**
@@ -199,7 +199,7 @@
     static constexpr int kVertsPerCubic = 4;
     static constexpr int kIndicesPerCubic = 6;
 
-    typedef BezierTestOp INHERITED;
+    using INHERITED = BezierTestOp;
 };
 
 
@@ -342,7 +342,7 @@
         return conicCnt;
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -402,7 +402,7 @@
     static constexpr int kVertsPerCubic = 4;
     static constexpr int kIndicesPerCubic = 6;
 
-    typedef BezierTestOp INHERITED;
+    using INHERITED = BezierTestOp;
 };
 
 /**
@@ -497,7 +497,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new BezierConicEffects;)
diff --git a/gm/beziers.cpp b/gm/beziers.cpp
index 5cc52de..7819d0f 100644
--- a/gm/beziers.cpp
+++ b/gm/beziers.cpp
@@ -95,7 +95,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new BeziersGM; )
diff --git a/gm/bigblurs.cpp b/gm/bigblurs.cpp
index 09e94dc..e768850 100644
--- a/gm/bigblurs.cpp
+++ b/gm/bigblurs.cpp
@@ -116,7 +116,7 @@
     static constexpr int kWidth = 5 * kCloseUpSize;
     static constexpr int kHeight = 2 * (kLastEnum_SkBlurStyle + 1) * kCloseUpSize;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new BigBlursGM;)
diff --git a/gm/bigrrectaaeffect.cpp b/gm/bigrrectaaeffect.cpp
index 2b106d7..492836f 100644
--- a/gm/bigrrectaaeffect.cpp
+++ b/gm/bigrrectaaeffect.cpp
@@ -126,7 +126,7 @@
     int fTestOffsetX;
     int fTestOffsetY;
     const char* fName;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bigtext.cpp b/gm/bigtext.cpp
index e491d10..b0db001 100644
--- a/gm/bigtext.cpp
+++ b/gm/bigtext.cpp
@@ -57,7 +57,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new BigTextGM;)
diff --git a/gm/bigtileimagefilter.cpp b/gm/bigtileimagefilter.cpp
index 918fe9f..b90631f 100644
--- a/gm/bigtileimagefilter.cpp
+++ b/gm/bigtileimagefilter.cpp
@@ -112,7 +112,7 @@
     sk_sp<SkImage> fRedImage;
     sk_sp<SkImage> fGreenImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bitmapfilters.cpp b/gm/bitmapfilters.cpp
index 73b5887..8e88723 100644
--- a/gm/bitmapfilters.cpp
+++ b/gm/bitmapfilters.cpp
@@ -112,7 +112,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new FilterGM; )
 
@@ -159,6 +159,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new TestExtractAlphaGM; )
diff --git a/gm/bitmapimage.cpp b/gm/bitmapimage.cpp
index 52a16dc..9f8d76d 100644
--- a/gm/bitmapimage.cpp
+++ b/gm/bitmapimage.cpp
@@ -79,7 +79,7 @@
 private:
     static constexpr int kSize = 512;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp
index bd6ff87..3cd9c9a 100644
--- a/gm/bitmappremul.cpp
+++ b/gm/bitmappremul.cpp
@@ -111,7 +111,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new BitmapPremulGM; )
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index 368b720..e840b81 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -90,7 +90,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -153,7 +153,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -227,7 +227,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class BitmapRectRounding : public skiagm::GM {
@@ -270,7 +270,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new BitmapRectRounding; )
 
diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp
index c0149f1..27b5cc1 100644
--- a/gm/bitmapshader.cpp
+++ b/gm/bitmapshader.cpp
@@ -112,7 +112,7 @@
     SkBitmap fBitmap;
     SkBitmap fMask;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_SIMPLE_GM(hugebitmapshader, canvas, 100, 100) {
diff --git a/gm/bleed.cpp b/gm/bleed.cpp
index 4eeae73..a94db84 100644
--- a/gm/bleed.cpp
+++ b/gm/bleed.cpp
@@ -315,7 +315,7 @@
     SkIRect fSmallSrcRect;
     SkCanvas::SrcRectConstraint fConstraint;
     bool fBatch = false;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new SrcRectConstraintGM("strict_constraint_no_red_allowed",
diff --git a/gm/blurcircles.cpp b/gm/blurcircles.cpp
index a8bb52d..18c2461 100644
--- a/gm/blurcircles.cpp
+++ b/gm/blurcircles.cpp
@@ -67,7 +67,7 @@
 
     sk_sp<SkMaskFilter> fBlurFilters[kNumBlurs];
 
-    typedef         skiagm::GM INHERITED;
+    using INHERITED =         skiagm::GM;
 };
 
 DEF_GM(return new BlurCirclesGM();)
diff --git a/gm/blurcircles2.cpp b/gm/blurcircles2.cpp
index c30d363..c399d56 100644
--- a/gm/blurcircles2.cpp
+++ b/gm/blurcircles2.cpp
@@ -164,7 +164,7 @@
 
     SkRandom    fRandom;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new BlurCircles2GM();)
diff --git a/gm/blurignorexform.cpp b/gm/blurignorexform.cpp
index 3e19d27..c8a40c9 100644
--- a/gm/blurignorexform.cpp
+++ b/gm/blurignorexform.cpp
@@ -134,7 +134,7 @@
     DrawType fDrawType;
     sk_sp<SkMaskFilter> fBlurFilters[kNumBlurs];
 
-    typedef         skiagm::GM INHERITED;
+    using INHERITED =         skiagm::GM;
 };
 
 const BlurIgnoreXformGM::BlurFlags BlurIgnoreXformGM::kBlurFlags[] = {
diff --git a/gm/blurquickreject.cpp b/gm/blurquickreject.cpp
index 45b6478..e309be4 100644
--- a/gm/blurquickreject.cpp
+++ b/gm/blurquickreject.cpp
@@ -85,7 +85,7 @@
     static constexpr int kWidth = 300;
     static constexpr int kHeight = 300;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new BlurQuickRejectGM(); )
diff --git a/gm/blurredclippedcircle.cpp b/gm/blurredclippedcircle.cpp
index 9f7c969..c7075b0 100644
--- a/gm/blurredclippedcircle.cpp
+++ b/gm/blurredclippedcircle.cpp
@@ -90,7 +90,7 @@
     static constexpr int kWidth = 1164;
     static constexpr int kHeight = 802;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bmpfilterqualityrepeat.cpp b/gm/bmpfilterqualityrepeat.cpp
index 47891a6..8630d81 100644
--- a/gm/bmpfilterqualityrepeat.cpp
+++ b/gm/bmpfilterqualityrepeat.cpp
@@ -97,7 +97,7 @@
 
     SkBitmap    fBmp;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 644f7ff..13cdd5d 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -202,7 +202,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 };
diff --git a/gm/circularclips.cpp b/gm/circularclips.cpp
index ad61e96..54985c4 100644
--- a/gm/circularclips.cpp
+++ b/gm/circularclips.cpp
@@ -91,7 +91,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/clip_error.cpp b/gm/clip_error.cpp
index 2f87dbb..f496ca1 100644
--- a/gm/clip_error.cpp
+++ b/gm/clip_error.cpp
@@ -82,7 +82,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new ClipErrorGM;)
diff --git a/gm/clip_strokerect.cpp b/gm/clip_strokerect.cpp
index 746ea2f..5ca3093 100644
--- a/gm/clip_strokerect.cpp
+++ b/gm/clip_strokerect.cpp
@@ -68,7 +68,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new ClipStrokeRectGM;)
diff --git a/gm/clippedbitmapshaders.cpp b/gm/clippedbitmapshaders.cpp
index aa22851..fee715a 100644
--- a/gm/clippedbitmapshaders.cpp
+++ b/gm/clippedbitmapshaders.cpp
@@ -116,7 +116,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 }  // namespace
 
diff --git a/gm/clockwise.cpp b/gm/clockwise.cpp
index a61d291..0b1892d 100644
--- a/gm/clockwise.cpp
+++ b/gm/clockwise.cpp
@@ -103,7 +103,7 @@
 
     const bool fReadSkFragCoord;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class GLSLClockwiseTestProcessor : public GrGLSLGeometryProcessor {
@@ -232,7 +232,7 @@
 
     friend class ::GrOpMemoryPool; // for ctor
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp
index d5d825f..e195376 100644
--- a/gm/coloremoji.cpp
+++ b/gm/coloremoji.cpp
@@ -191,7 +191,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/coloremoji_blendmodes.cpp b/gm/coloremoji_blendmodes.cpp
index 250fbbb..12f0b91 100644
--- a/gm/coloremoji_blendmodes.cpp
+++ b/gm/coloremoji_blendmodes.cpp
@@ -167,7 +167,7 @@
     SkBitmap            fBG;
     sk_sp<SkTypeface>   fColorType;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 }  // namespace
 
diff --git a/gm/colorfilteralpha8.cpp b/gm/colorfilteralpha8.cpp
index 0fe6b5e..2c38143 100644
--- a/gm/colorfilteralpha8.cpp
+++ b/gm/colorfilteralpha8.cpp
@@ -49,6 +49,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ColorFilterAlpha8; )
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index 8f3f5e2..46a90ab 100644
--- a/gm/colormatrix.cpp
+++ b/gm/colormatrix.cpp
@@ -139,6 +139,6 @@
     sk_sp<SkImage>   fSolidImg;
     sk_sp<SkImage>   fTransparentImg;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ColorMatrixGM; )
diff --git a/gm/complexclip.cpp b/gm/complexclip.cpp
index 5bdec62..4a7e0ec 100644
--- a/gm/complexclip.cpp
+++ b/gm/complexclip.cpp
@@ -194,7 +194,7 @@
     bool fDoSaveLayer;
     bool fInvertDraw;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp
index e83933a..9e8b589 100644
--- a/gm/complexclip2.cpp
+++ b/gm/complexclip2.cpp
@@ -209,7 +209,7 @@
     SkScalar fTotalWidth;
     SkScalar fTotalHeight;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip3.cpp b/gm/complexclip3.cpp
index e08cd1b..ece4b72 100644
--- a/gm/complexclip3.cpp
+++ b/gm/complexclip3.cpp
@@ -129,7 +129,7 @@
 private:
     bool fDoSimpleClipFirst;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip4.cpp b/gm/complexclip4.cpp
index 6ef34af..93dec8b 100644
--- a/gm/complexclip4.cpp
+++ b/gm/complexclip4.cpp
@@ -127,7 +127,7 @@
     SkIRect fDeviceRestriction;
     bool    fDoAAClip;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip_blur_tiled.cpp b/gm/complexclip_blur_tiled.cpp
index 330458c..24aaea0 100644
--- a/gm/complexclip_blur_tiled.cpp
+++ b/gm/complexclip_blur_tiled.cpp
@@ -68,7 +68,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/composeshader.cpp b/gm/composeshader.cpp
index b4fdfd2..a935dea 100644
--- a/gm/composeshader.cpp
+++ b/gm/composeshader.cpp
@@ -241,7 +241,7 @@
     sk_sp<SkShader> fAlpha8BitmapShader;
     sk_sp<SkShader> fLinearGradientShader;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new ComposeShaderBitmapGM(false); )
 DEF_GM( return new ComposeShaderBitmapGM(true); )
diff --git a/gm/compositor_quads.cpp b/gm/compositor_quads.cpp
index aabc361..934afba 100644
--- a/gm/compositor_quads.cpp
+++ b/gm/compositor_quads.cpp
@@ -538,7 +538,7 @@
         SkASSERT(fMatrices.count() == fMatrixNames.count());
     }
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////
@@ -608,7 +608,7 @@
             : fAAOverride(aa)
             , fEnableAAOverride(enableAAOverrde) {}
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 // Tests tmp_drawEdgeAAQuad
@@ -635,7 +635,7 @@
 
     SolidColorRenderer(const SkColor4f& color) : fColor(color) {}
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 // Tests drawEdgeAAImageSet(), but can batch the entries together in different ways
@@ -885,7 +885,7 @@
         return 1;
     }
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 class YUVTextureSetRenderer : public ClipTileRenderer {
@@ -985,7 +985,7 @@
         return 1;
     }
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 static SkTArray<sk_sp<ClipTileRenderer>> make_debug_renderers() {
diff --git a/gm/compressed_textures.cpp b/gm/compressed_textures.cpp
index 37720ac..6db0758 100644
--- a/gm/compressed_textures.cpp
+++ b/gm/compressed_textures.cpp
@@ -319,7 +319,7 @@
     sk_sp<SkImage> fOpaqueBC1Image;
     sk_sp<SkImage> fTransparentBC1Image;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/conicpaths.cpp b/gm/conicpaths.cpp
index f68edbd..49be3fc 100644
--- a/gm/conicpaths.cpp
+++ b/gm/conicpaths.cpp
@@ -141,7 +141,7 @@
 private:
     SkTArray<SkPath> fPaths;
     SkPath           fGiantCircle;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new ConicPathsGM;)
 
diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp
index bf3d6a1..3a0e28b 100644
--- a/gm/constcolorprocessor.cpp
+++ b/gm/constcolorprocessor.cpp
@@ -213,7 +213,7 @@
     static constexpr int            kWidth  = 820;
     static constexpr int            kHeight = 500;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ColorProcessor{ColorProcessor::TestMode::kConstColor};)
diff --git a/gm/convex_all_line_paths.cpp b/gm/convex_all_line_paths.cpp
index 27f504c..1294325 100644
--- a/gm/convex_all_line_paths.cpp
+++ b/gm/convex_all_line_paths.cpp
@@ -405,7 +405,7 @@
 
     bool fDoStrokeAndFill;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/convexpolyclip.cpp b/gm/convexpolyclip.cpp
index 8d53b50..3e78054 100644
--- a/gm/convexpolyclip.cpp
+++ b/gm/convexpolyclip.cpp
@@ -304,7 +304,7 @@
     ClipList         fClips;
     SkBitmap         fBmp;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ConvexPolyClip;)
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 9d4c852..635783b 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -202,7 +202,7 @@
     PathList fPaths;
     RectList fRects;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ConvexPolyEffect;)
diff --git a/gm/croppedrects.cpp b/gm/croppedrects.cpp
index 3a16e27..5e9f0bd 100644
--- a/gm/croppedrects.cpp
+++ b/gm/croppedrects.cpp
@@ -110,7 +110,7 @@
     sk_sp<SkImage> fSrcImage;
     sk_sp<SkShader> fSrcImageShader;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new CroppedRectsGM(); )
diff --git a/gm/cubicpaths.cpp b/gm/cubicpaths.cpp
index 0ca5552..1490a67 100644
--- a/gm/cubicpaths.cpp
+++ b/gm/cubicpaths.cpp
@@ -114,7 +114,7 @@
     SkPath fPath;
     SkPath fFlipped;
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 
diff --git a/gm/dashcircle.cpp b/gm/dashcircle.cpp
index 19a275d..00705ee 100644
--- a/gm/dashcircle.cpp
+++ b/gm/dashcircle.cpp
@@ -114,7 +114,7 @@
 private:
     SkScalar fRotation;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new DashCircleGM; )
diff --git a/gm/dashcubics.cpp b/gm/dashcubics.cpp
index 03bfe90..a6abadf 100644
--- a/gm/dashcubics.cpp
+++ b/gm/dashcubics.cpp
@@ -171,7 +171,7 @@
     SkTArray<SkPath> fPaths;
     SkScalar         fOffset = 0;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new TrimGM;)
 
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index 559c4f6..a1f6c84 100644
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -242,7 +242,7 @@
     sk_sp<SkTypeface> fEmojiTypeface;
     const char* fEmojiText;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new DFTextGM;)
diff --git a/gm/dftext_blob_persp.cpp b/gm/dftext_blob_persp.cpp
index 271e89d..9e50628 100644
--- a/gm/dftext_blob_persp.cpp
+++ b/gm/dftext_blob_persp.cpp
@@ -144,7 +144,7 @@
     }
 
     SkTArray<sk_sp<SkTextBlob>> fBlobs;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new DFTextBlobPerspGM;)
diff --git a/gm/discard.cpp b/gm/discard.cpp
index b092a59..f39d289 100644
--- a/gm/discard.cpp
+++ b/gm/discard.cpp
@@ -92,7 +92,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index 51ab5a3..33d902c 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -165,7 +165,7 @@
     SkBitmap fBitmap;
     sk_sp<SkImage> fCheckerboard, fSmall, fLarge, fLargeW, fLargeH;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/drawatlas.cpp b/gm/drawatlas.cpp
index 2ea54bb..51b192a 100644
--- a/gm/drawatlas.cpp
+++ b/gm/drawatlas.cpp
@@ -122,7 +122,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new DrawAtlasGM; )
 
diff --git a/gm/drawatlascolor.cpp b/gm/drawatlascolor.cpp
index 096620d..35d6ac1 100644
--- a/gm/drawatlascolor.cpp
+++ b/gm/drawatlascolor.cpp
@@ -171,6 +171,6 @@
     static constexpr int kPad = 2;
     static constexpr int kTextPad = 8;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new DrawAtlasColorsGM; )
diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp
index 7eb4fe9..0bda495 100644
--- a/gm/drawbitmaprect.cpp
+++ b/gm/drawbitmaprect.cpp
@@ -248,7 +248,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new DrawBitmapRectGM(bitmapproc      , nullptr); )
diff --git a/gm/drawminibitmaprect.cpp b/gm/drawminibitmaprect.cpp
index ea044c2..9231b90 100644
--- a/gm/drawminibitmaprect.cpp
+++ b/gm/drawminibitmaprect.cpp
@@ -145,7 +145,7 @@
     sk_sp<SkImage>  fImage;
     SkString        fName;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new DrawMiniBitmapRectGM(true); )
diff --git a/gm/drawregion.cpp b/gm/drawregion.cpp
index 8848934..44a3c28 100644
--- a/gm/drawregion.cpp
+++ b/gm/drawregion.cpp
@@ -56,6 +56,6 @@
     SkRegion fRegion;
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new DrawRegionGM; )
diff --git a/gm/drawregionmodes.cpp b/gm/drawregionmodes.cpp
index 3b153a0..d476324 100644
--- a/gm/drawregionmodes.cpp
+++ b/gm/drawregionmodes.cpp
@@ -85,6 +85,6 @@
 private:
     SkRegion fRegion;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new DrawRegionModesGM; )
diff --git a/gm/drrect.cpp b/gm/drrect.cpp
index 634e203..b863ce5 100644
--- a/gm/drrect.cpp
+++ b/gm/drrect.cpp
@@ -70,7 +70,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new DRRectGM; )
diff --git a/gm/dstreadshuffle.cpp b/gm/dstreadshuffle.cpp
index 4bb233a..64f3bbc 100644
--- a/gm/dstreadshuffle.cpp
+++ b/gm/dstreadshuffle.cpp
@@ -196,7 +196,7 @@
     static constexpr SkColor kBackground = SK_ColorLTGRAY;
     SkPath fConcavePath;
     SkPath fConvexPath;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/emboss.cpp b/gm/emboss.cpp
index 82a13b3..04c99fd 100644
--- a/gm/emboss.cpp
+++ b/gm/emboss.cpp
@@ -88,7 +88,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new EmbossGM;)
diff --git a/gm/encode.cpp b/gm/encode.cpp
index 79688b1..c0946b6 100644
--- a/gm/encode.cpp
+++ b/gm/encode.cpp
@@ -51,7 +51,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodeGM; )
diff --git a/gm/encode_alpha_jpeg.cpp b/gm/encode_alpha_jpeg.cpp
index cc9cf61..14d13d8 100644
--- a/gm/encode_alpha_jpeg.cpp
+++ b/gm/encode_alpha_jpeg.cpp
@@ -103,7 +103,7 @@
 private:
     SkAutoTMalloc<uint8_t> fStorage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodeJpegAlphaOptsGM; )
diff --git a/gm/encode_color_types.cpp b/gm/encode_color_types.cpp
index b814830..911a439 100644
--- a/gm/encode_color_types.cpp
+++ b/gm/encode_color_types.cpp
@@ -150,7 +150,7 @@
     const Variant              fVariant;
     const char*                fName;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 
diff --git a/gm/encode_platform.cpp b/gm/encode_platform.cpp
index 1a87e0b..591af94 100644
--- a/gm/encode_platform.cpp
+++ b/gm/encode_platform.cpp
@@ -142,7 +142,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodePlatformGM; )
diff --git a/gm/encode_srgb.cpp b/gm/encode_srgb.cpp
index d707b8c..c1c00ec 100644
--- a/gm/encode_srgb.cpp
+++ b/gm/encode_srgb.cpp
@@ -144,7 +144,7 @@
 private:
     SkEncodedImageFormat fEncodedFormat;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodeSRGBGM(SkEncodedImageFormat::kPNG); )
diff --git a/gm/exoticformats.cpp b/gm/exoticformats.cpp
index 02f919b..71a85f2 100644
--- a/gm/exoticformats.cpp
+++ b/gm/exoticformats.cpp
@@ -434,7 +434,7 @@
     sk_sp<SkImage> fETC1Image;
     sk_sp<SkImage> fBC1Image;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/extractbitmap.cpp b/gm/extractbitmap.cpp
index 6809057..3dfe386 100644
--- a/gm/extractbitmap.cpp
+++ b/gm/extractbitmap.cpp
@@ -77,7 +77,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filltypes.cpp b/gm/filltypes.cpp
index 5f547b9..0817a60 100644
--- a/gm/filltypes.cpp
+++ b/gm/filltypes.cpp
@@ -93,7 +93,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filltypespersp.cpp b/gm/filltypespersp.cpp
index 6ea8ec0..fbad173 100644
--- a/gm/filltypespersp.cpp
+++ b/gm/filltypespersp.cpp
@@ -133,7 +133,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp
index 9caa19f..5a6e8ef 100644
--- a/gm/filterbitmap.cpp
+++ b/gm/filterbitmap.cpp
@@ -168,7 +168,7 @@
       }
 private:
     const bool fConvertToG8;
-    typedef FilterBitmapGM INHERITED;
+    using INHERITED = FilterBitmapGM;
 };
 
 class FilterBitmapImageGM: public FilterBitmapGM {
@@ -204,7 +204,7 @@
       }
 private:
     const bool fConvertToG8;
-    typedef FilterBitmapGM INHERITED;
+    using INHERITED = FilterBitmapGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filterbug.cpp b/gm/filterbug.cpp
index 777dcb4..a89dfb1 100644
--- a/gm/filterbug.cpp
+++ b/gm/filterbug.cpp
@@ -103,7 +103,7 @@
     sk_sp<SkImage> fTop;
     sk_sp<SkImage> fBot;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filterfastbounds.cpp b/gm/filterfastbounds.cpp
index ef8ed58..284403d 100644
--- a/gm/filterfastbounds.cpp
+++ b/gm/filterfastbounds.cpp
@@ -316,7 +316,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/flippity.cpp b/gm/flippity.cpp
index 25648ed..aaf9722 100644
--- a/gm/flippity.cpp
+++ b/gm/flippity.cpp
@@ -306,7 +306,7 @@
     SkTArray<sk_sp<SkImage>> fLabels;
     sk_sp<SkImage> fReferenceImages[2];
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new FlippityGM;)
diff --git a/gm/fontcache.cpp b/gm/fontcache.cpp
index 657d1ef..a373627 100644
--- a/gm/fontcache.cpp
+++ b/gm/fontcache.cpp
@@ -130,7 +130,7 @@
 
     GrContextOptions::Enable fAllowMultipleTextures;
     sk_sp<SkTypeface> fTypefaces[6];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 constexpr SkScalar FontCacheGM::kSize;
diff --git a/gm/fontregen.cpp b/gm/fontregen.cpp
index a474943..fe68689 100644
--- a/gm/fontregen.cpp
+++ b/gm/fontregen.cpp
@@ -110,7 +110,7 @@
     static constexpr int kSize = 512;
 
     sk_sp<SkTextBlob> fBlobs[3];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -154,7 +154,7 @@
     static constexpr int kSize = 512;
 
     sk_sp<SkTextBlob> fBlobs[3];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index a27f223..9e6cc0f 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -78,7 +78,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/fpcoordinateoverride.cpp b/gm/fpcoordinateoverride.cpp
index a42acf6..42155b6 100644
--- a/gm/fpcoordinateoverride.cpp
+++ b/gm/fpcoordinateoverride.cpp
@@ -56,7 +56,7 @@
 
 private:
     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 class GLSLSampleCoordEffect : public GrGLSLFragmentProcessor {
diff --git a/gm/fwidth_squircle.cpp b/gm/fwidth_squircle.cpp
index a73944f..32b699e 100644
--- a/gm/fwidth_squircle.cpp
+++ b/gm/fwidth_squircle.cpp
@@ -87,7 +87,7 @@
 
     class Impl;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class FwidthSquircleTestProcessor::Impl : public GrGLSLGeometryProcessor {
@@ -245,7 +245,7 @@
 
     friend class ::GrOpMemoryPool; // for ctor
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp
index a2b6de5..4949494 100644
--- a/gm/gammatext.cpp
+++ b/gm/gammatext.cpp
@@ -89,7 +89,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new GammaTextGM; )
@@ -156,7 +156,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new GammaShaderTextGM; )
diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp
index 4a32c29..82311da 100644
--- a/gm/giantbitmap.cpp
+++ b/gm/giantbitmap.cpp
@@ -126,7 +126,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/gradient_dirty_laundry.cpp b/gm/gradient_dirty_laundry.cpp
index 3750899..cbf5e96 100644
--- a/gm/gradient_dirty_laundry.cpp
+++ b/gm/gradient_dirty_laundry.cpp
@@ -103,7 +103,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/gradients.cpp b/gm/gradients.cpp
index 34cfec4..904a67f 100644
--- a/gm/gradients.cpp
+++ b/gm/gradients.cpp
@@ -360,7 +360,7 @@
     }
 
 private:
-    typedef GradientsGM INHERITED;
+    using INHERITED = GradientsGM;
 };
 DEF_GM( return new GradientsViewPerspectiveGM(true); )
 DEF_GM( return new GradientsViewPerspectiveGM(false); )
@@ -579,7 +579,7 @@
 private:
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new RadialGradient2GM(true); )
 DEF_GM( return new RadialGradient2GM(false); )
@@ -617,7 +617,7 @@
     sk_sp<SkShader> fShader;
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new RadialGradient3GM(true); )
 DEF_GM( return new RadialGradient3GM(false); )
@@ -655,7 +655,7 @@
     sk_sp<SkShader> fShader;
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new RadialGradient4GM(true); )
 DEF_GM( return new RadialGradient4GM(false); )
@@ -707,7 +707,7 @@
     sk_sp<SkShader> fShader[100];
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new LinearGradientGM(true); )
 DEF_GM( return new LinearGradientGM(false); )
diff --git a/gm/gradients_degenerate.cpp b/gm/gradients_degenerate.cpp
index ae4de5c..2b8306c 100644
--- a/gm/gradients_degenerate.cpp
+++ b/gm/gradients_degenerate.cpp
@@ -154,7 +154,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new DegenerateGradientGM;)
diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp
index 32412b9..93987c8 100644
--- a/gm/gradients_no_texture.cpp
+++ b/gm/gradients_no_texture.cpp
@@ -135,7 +135,7 @@
 private:
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -287,7 +287,7 @@
 private:
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp
index 0674f1b..f91482e 100644
--- a/gm/hairlines.cpp
+++ b/gm/hairlines.cpp
@@ -192,7 +192,7 @@
 
 private:
     SkTArray<SkPath> fPaths;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 static void draw_squarehair_tests(SkCanvas* canvas, SkScalar width, SkPaint::Cap cap, bool aa) {
diff --git a/gm/hairmodes.cpp b/gm/hairmodes.cpp
index 92b1ae2..3a05c44 100644
--- a/gm/hairmodes.cpp
+++ b/gm/hairmodes.cpp
@@ -126,7 +126,7 @@
         }
 
     private:
-        typedef GM INHERITED;
+        using INHERITED = GM;
     };
 
     //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/hardstop_gradients.cpp b/gm/hardstop_gradients.cpp
index 4155dd0..9b65b70 100644
--- a/gm/hardstop_gradients.cpp
+++ b/gm/hardstop_gradients.cpp
@@ -168,7 +168,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new HardstopGradientShaderGM;)
diff --git a/gm/highcontrastfilter.cpp b/gm/highcontrastfilter.cpp
index 552a062..f83a374 100644
--- a/gm/highcontrastfilter.cpp
+++ b/gm/highcontrastfilter.cpp
@@ -160,7 +160,7 @@
     sk_sp<SkColorFilter>    fFilter;
     sk_sp<SkShader>         fGr1, fGr2;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new HighContrastFilterGM;)
diff --git a/gm/image.cpp b/gm/image.cpp
index 2d66e86..e2f2922 100644
--- a/gm/image.cpp
+++ b/gm/image.cpp
@@ -172,7 +172,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ImageGM; )
 
@@ -295,7 +295,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ScalePixelsGM; )
 
diff --git a/gm/image_pict.cpp b/gm/image_pict.cpp
index 8cb14d2..bb785b7 100644
--- a/gm/image_pict.cpp
+++ b/gm/image_pict.cpp
@@ -120,7 +120,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ImagePictGM; )
 
@@ -366,7 +366,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new ImageCacheratorGM("picture", make_pic_generator); )
diff --git a/gm/image_shader.cpp b/gm/image_shader.cpp
index 169410a..72f6a93 100644
--- a/gm/image_shader.cpp
+++ b/gm/image_shader.cpp
@@ -150,6 +150,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ImageShaderGM; )
diff --git a/gm/imagealphathreshold.cpp b/gm/imagealphathreshold.cpp
index c9a5a3f..7eb2f32 100644
--- a/gm/imagealphathreshold.cpp
+++ b/gm/imagealphathreshold.cpp
@@ -96,7 +96,7 @@
 private:
     bool fUseCropRect;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 // Create a 'width' x 'height' SkSurface that matches the colorType of 'canvas' as
@@ -160,7 +160,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imageblurclampmode.cpp b/gm/imageblurclampmode.cpp
index e6d5d98..3bbd18e 100644
--- a/gm/imageblurclampmode.cpp
+++ b/gm/imageblurclampmode.cpp
@@ -105,7 +105,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imageblurrepeatmode.cpp b/gm/imageblurrepeatmode.cpp
index 7a6cff8..a6f03f2 100644
--- a/gm/imageblurrepeatmode.cpp
+++ b/gm/imageblurrepeatmode.cpp
@@ -119,7 +119,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imageblurtiled.cpp b/gm/imageblurtiled.cpp
index 0e36607..3b4252a 100644
--- a/gm/imageblurtiled.cpp
+++ b/gm/imageblurtiled.cpp
@@ -71,7 +71,7 @@
     SkScalar fSigmaX;
     SkScalar fSigmaY;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index b99a7b9..85735fc 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -51,7 +51,7 @@
 
 private:
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 sk_sp<SkFlattenable> FailImageFilter::CreateProc(SkReadBuffer& buffer) {
@@ -76,7 +76,7 @@
 private:
     IdentityImageFilter(sk_sp<SkImageFilter> input) : INHERITED(&input, 1, nullptr) {}
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 // Register these image filters as deserializable before main().
@@ -275,7 +275,7 @@
 
     sk_sp<SkImage> fAtlas;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new ImageFiltersBaseGM; )
 
@@ -346,7 +346,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class ImageFiltersText_IF : public ImageFiltersTextBaseGM {
diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp
index f861e39..7372e40 100644
--- a/gm/imagefiltersclipped.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -150,7 +150,7 @@
 private:
     sk_sp<SkImage> fCheckerboard, fGradientCircle;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefilterscropped.cpp b/gm/imagefilterscropped.cpp
index 21f3981..b0b09cf 100644
--- a/gm/imagefilterscropped.cpp
+++ b/gm/imagefilterscropped.cpp
@@ -172,7 +172,7 @@
 
 private:
     SkBitmap fCheckerboard;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index 25e4de9..6ed23e1 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -156,7 +156,7 @@
 
     sk_sp<SkImage> fImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index d84f106..a5ca3e7 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -156,7 +156,7 @@
 private:
     sk_sp<SkImage> fCheckerboard, fGradientCircle;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersstroked.cpp b/gm/imagefiltersstroked.cpp
index 2270362..df944a9 100644
--- a/gm/imagefiltersstroked.cpp
+++ b/gm/imagefiltersstroked.cpp
@@ -102,7 +102,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefilterstransformed.cpp b/gm/imagefilterstransformed.cpp
index 8d14474..d2a0622 100644
--- a/gm/imagefilterstransformed.cpp
+++ b/gm/imagefilterstransformed.cpp
@@ -120,7 +120,7 @@
 private:
     sk_sp<SkImage> fCheckerboard;
     sk_sp<SkImage> fGradientCircle;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new ImageFiltersTransformedGM; )
 }  // namespace skiagm
diff --git a/gm/imagefromyuvtextures.cpp b/gm/imagefromyuvtextures.cpp
index a3920e4..60183b6 100644
--- a/gm/imagefromyuvtextures.cpp
+++ b/gm/imagefromyuvtextures.cpp
@@ -331,7 +331,7 @@
 
     static constexpr SkScalar kPad = 10.0f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ImageFromYUVTextures;)
diff --git a/gm/imagemakewithfilter.cpp b/gm/imagemakewithfilter.cpp
index 10f5670..958b1d0 100644
--- a/gm/imagemakewithfilter.cpp
+++ b/gm/imagemakewithfilter.cpp
@@ -389,7 +389,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 // The different strategies should all look the same, with the exception of filters that affect
 // transparent black (i.e. the lighting filter). In the save layer case, the filter affects the
diff --git a/gm/imagemasksubset.cpp b/gm/imagemasksubset.cpp
index d8f40ba..5775021 100644
--- a/gm/imagemasksubset.cpp
+++ b/gm/imagemasksubset.cpp
@@ -47,7 +47,7 @@
     }
 
 private:
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 
 using MakerT = sk_sp<SkImage>(*)(SkCanvas*, const SkImageInfo&);
diff --git a/gm/imagescalealigned.cpp b/gm/imagescalealigned.cpp
index d245a10..1ee5f37 100644
--- a/gm/imagescalealigned.cpp
+++ b/gm/imagescalealigned.cpp
@@ -155,7 +155,7 @@
     static constexpr unsigned  kStretchFactor = 4;
     SkSTArray<2, ImageSet> fSets;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ImageScaleAlignedGM();)
diff --git a/gm/imagesource.cpp b/gm/imagesource.cpp
index 897012e..ea7544a 100644
--- a/gm/imagesource.cpp
+++ b/gm/imagesource.cpp
@@ -91,7 +91,7 @@
 
 private:
     sk_sp<SkImage> fImage;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagesource2.cpp b/gm/imagesource2.cpp
index 9ddf807..005a626 100644
--- a/gm/imagesource2.cpp
+++ b/gm/imagesource2.cpp
@@ -90,7 +90,7 @@
     SkFilterQuality fFilter;
     sk_sp<SkImage>  fImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/jpg_color_cube.cpp b/gm/jpg_color_cube.cpp
index 6ed782b..e9940d9 100644
--- a/gm/jpg_color_cube.cpp
+++ b/gm/jpg_color_cube.cpp
@@ -65,7 +65,7 @@
 private:
     sk_sp<SkImage> fImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new ColorCubeGM; )
diff --git a/gm/lattice.cpp b/gm/lattice.cpp
index d1090cb..21d3d8b 100644
--- a/gm/lattice.cpp
+++ b/gm/lattice.cpp
@@ -221,7 +221,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new LatticeGM; )
 
@@ -355,7 +355,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new LatticeGM2; )
 
diff --git a/gm/lcdblendmodes.cpp b/gm/lcdblendmodes.cpp
index f6c5a01..91c3d63 100644
--- a/gm/lcdblendmodes.cpp
+++ b/gm/lcdblendmodes.cpp
@@ -146,7 +146,7 @@
 private:
     SkScalar fTextHeight;
     sk_sp<SkShader> fCheckerboard;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/lcdoverlap.cpp b/gm/lcdoverlap.cpp
index 8470fd6..6b1e980 100644
--- a/gm/lcdoverlap.cpp
+++ b/gm/lcdoverlap.cpp
@@ -91,7 +91,7 @@
 private:
     SkScalar fTextHeight;
     sk_sp<SkTextBlob> fBlob;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index f47c85d..9a272e4 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -147,7 +147,7 @@
     SkBitmap fBitmap;
     SkScalar fAzimuth;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/lumafilter.cpp b/gm/lumafilter.cpp
index 3c360be..ce8b571 100644
--- a/gm/lumafilter.cpp
+++ b/gm/lumafilter.cpp
@@ -161,7 +161,7 @@
     sk_sp<SkColorFilter>    fFilter;
     sk_sp<SkShader>         fGr1, fGr2;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/manypaths.cpp b/gm/manypaths.cpp
index 4f6fca3..24fc263 100644
--- a/gm/manypaths.cpp
+++ b/gm/manypaths.cpp
@@ -64,7 +64,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -117,7 +117,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 006d14e..582392e 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -140,7 +140,7 @@
     const char* fNameSuffix;
     KernelFixture fKernelFixture;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/mixedtextblobs.cpp b/gm/mixedtextblobs.cpp
index 4f0107a..e7b6828 100644
--- a/gm/mixedtextblobs.cpp
+++ b/gm/mixedtextblobs.cpp
@@ -160,7 +160,7 @@
     static constexpr int kWidth = 1250;
     static constexpr int kHeight = 700;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/modecolorfilters.cpp b/gm/modecolorfilters.cpp
index a4dac43..eaa0639 100644
--- a/gm/modecolorfilters.cpp
+++ b/gm/modecolorfilters.cpp
@@ -162,7 +162,7 @@
 
 private:
     sk_sp<SkShader> fBmpShader;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/morphology.cpp b/gm/morphology.cpp
index 6841e41..9a7c7b4 100644
--- a/gm/morphology.cpp
+++ b/gm/morphology.cpp
@@ -93,7 +93,7 @@
 private:
     SkBitmap fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/nested.cpp b/gm/nested.cpp
index 67390ad..3dc3c3d 100644
--- a/gm/nested.cpp
+++ b/gm/nested.cpp
@@ -137,7 +137,7 @@
     bool fDoAA;
     bool fFlipped;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/ninepatchstretch.cpp b/gm/ninepatchstretch.cpp
index 9b96d4b..078126f 100644
--- a/gm/ninepatchstretch.cpp
+++ b/gm/ninepatchstretch.cpp
@@ -106,6 +106,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new NinePatchStretchGM; )
diff --git a/gm/nonclosedpaths.cpp b/gm/nonclosedpaths.cpp
index 67d94c6..dccce38 100644
--- a/gm/nonclosedpaths.cpp
+++ b/gm/nonclosedpaths.cpp
@@ -141,7 +141,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp
index 47ed99c..f7104b7 100644
--- a/gm/offsetimagefilter.cpp
+++ b/gm/offsetimagefilter.cpp
@@ -98,7 +98,7 @@
 
     sk_sp<SkImage> fBitmap, fCheckerboard;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new OffsetImageFilterGM; )
 
@@ -207,6 +207,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new SimpleOffsetImageFilterGM; )
diff --git a/gm/ovals.cpp b/gm/ovals.cpp
index 49e1e2d..f6d9669 100644
--- a/gm/ovals.cpp
+++ b/gm/ovals.cpp
@@ -301,7 +301,7 @@
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/pathcontourstart.cpp b/gm/pathcontourstart.cpp
index 72d955e..f2df489 100644
--- a/gm/pathcontourstart.cpp
+++ b/gm/pathcontourstart.cpp
@@ -116,7 +116,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new ContourStartGM(); )
diff --git a/gm/patheffects.cpp b/gm/patheffects.cpp
index 5964f32..aabe3de 100644
--- a/gm/patheffects.cpp
+++ b/gm/patheffects.cpp
@@ -169,7 +169,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new PathEffectGM; )
@@ -232,7 +232,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new ComboPathEfectsGM;)
 
diff --git a/gm/pathfill.cpp b/gm/pathfill.cpp
index 578edad..c2d4046 100644
--- a/gm/pathfill.cpp
+++ b/gm/pathfill.cpp
@@ -349,7 +349,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // test inverse-fill w/ a clip that completely excludes the geometry
@@ -415,7 +415,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_SIMPLE_GM(rotatedcubicpath, canvas, 200, 200) {
diff --git a/gm/pathinterior.cpp b/gm/pathinterior.cpp
index eb83d93..636e5f5 100644
--- a/gm/pathinterior.cpp
+++ b/gm/pathinterior.cpp
@@ -108,7 +108,7 @@
 
 private:
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/pathmaskcache.cpp b/gm/pathmaskcache.cpp
index 07642fe..7493cdd 100644
--- a/gm/pathmaskcache.cpp
+++ b/gm/pathmaskcache.cpp
@@ -114,7 +114,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new PathMaskCache(); )
diff --git a/gm/pathopsinverse.cpp b/gm/pathopsinverse.cpp
index 23676e3..c52a88f 100644
--- a/gm/pathopsinverse.cpp
+++ b/gm/pathopsinverse.cpp
@@ -110,7 +110,7 @@
     SkPaint fTwoPaint;
     SkPaint fOutlinePaint;
     SkPaint fOpPaint[kReverseDifference_SkPathOp - kDifference_SkPathOp + 1];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp
index 1c5aa7d..5f30772 100644
--- a/gm/perlinnoise.cpp
+++ b/gm/perlinnoise.cpp
@@ -100,7 +100,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class PerlinNoiseGM2 : public skiagm::GM {
diff --git a/gm/perspimages.cpp b/gm/perspimages.cpp
index 6be57b6..74990cc 100644
--- a/gm/perspimages.cpp
+++ b/gm/perspimages.cpp
@@ -123,7 +123,7 @@
     static constexpr int kNumImages = 4;
     SkTArray<sk_sp<SkImage>> fImages;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/perspshaders.cpp b/gm/perspshaders.cpp
index fcd9db5..956fd72 100644
--- a/gm/perspshaders.cpp
+++ b/gm/perspshaders.cpp
@@ -177,7 +177,7 @@
     sk_sp<SkImage>  fImage;
     SkBitmap        fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new PerspShadersGM(true);)
 DEF_GM(return new PerspShadersGM(false);)
diff --git a/gm/picture.cpp b/gm/picture.cpp
index fbf46af..907b234 100644
--- a/gm/picture.cpp
+++ b/gm/picture.cpp
@@ -84,7 +84,7 @@
 private:
     sk_sp<SkPicture> fPicture;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // Exercise drawing a picture with a cull rect of non-zero top-left corner.
@@ -139,7 +139,7 @@
 private:
     sk_sp<SkPicture> fPicture;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new PictureGM;)
diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp
index 40a6d68..df0a330 100644
--- a/gm/pictureimagefilter.cpp
+++ b/gm/pictureimagefilter.cpp
@@ -153,7 +153,7 @@
     sk_sp<SkPicture> fPicture;
     sk_sp<SkPicture> fLCDPicture;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/pictureimagegenerator.cpp b/gm/pictureimagegenerator.cpp
index b453420..a0e27b6 100644
--- a/gm/pictureimagegenerator.cpp
+++ b/gm/pictureimagegenerator.cpp
@@ -206,7 +206,7 @@
     const SkScalar kPictureWidth = 200;
     const SkScalar kPictureHeight = 100;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new PictureGeneratorGM;)
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp
index 7a592e9..f0818bb 100644
--- a/gm/pictureshader.cpp
+++ b/gm/pictureshader.cpp
@@ -192,7 +192,7 @@
     SkScalar    fSceneSize;
     bool        fUseLocalMatrixWrapper;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new PictureShaderGM(50, 100);)
diff --git a/gm/pictureshadercache.cpp b/gm/pictureshadercache.cpp
index d6f2b1b..a21c276 100644
--- a/gm/pictureshadercache.cpp
+++ b/gm/pictureshadercache.cpp
@@ -93,7 +93,7 @@
     sk_sp<SkPicture> fPicture;
     SkBitmap         fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new PictureShaderCacheGM(100);)
diff --git a/gm/pictureshadertile.cpp b/gm/pictureshadertile.cpp
index d7afbe9..ea2ba4d 100644
--- a/gm/pictureshadertile.cpp
+++ b/gm/pictureshadertile.cpp
@@ -159,7 +159,7 @@
 private:
     sk_sp<SkShader> fShaders[SK_ARRAY_COUNT(tiles)];
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new PictureShaderTileGM;)
diff --git a/gm/pixelsnap.cpp b/gm/pixelsnap.cpp
index d3522bb..659f3f0 100644
--- a/gm/pixelsnap.cpp
+++ b/gm/pixelsnap.cpp
@@ -107,7 +107,7 @@
     virtual void drawElement(SkCanvas*) = 0;
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class PointSnapGM : public PixelSnapGM {
@@ -121,7 +121,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 class LineSnapGM : public PixelSnapGM {
@@ -136,7 +136,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 class RectSnapGM : public PixelSnapGM {
@@ -149,7 +149,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 class ComboSnapGM : public PixelSnapGM {
@@ -186,7 +186,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/points.cpp b/gm/points.cpp
index a6a76eb..324cb0a 100644
--- a/gm/points.cpp
+++ b/gm/points.cpp
@@ -72,7 +72,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp
index 141a602..c8695b9 100644
--- a/gm/poly2poly.cpp
+++ b/gm/poly2poly.cpp
@@ -116,7 +116,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
     sk_sp<SkTypeface> fEmFace;
 };
 
diff --git a/gm/polygonoffset.cpp b/gm/polygonoffset.cpp
index fe703a1..c5470dc 100644
--- a/gm/polygonoffset.cpp
+++ b/gm/polygonoffset.cpp
@@ -616,7 +616,7 @@
 
     bool fConvexOnly;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/polygons.cpp b/gm/polygons.cpp
index d7328a4..ee2b734 100644
--- a/gm/polygons.cpp
+++ b/gm/polygons.cpp
@@ -167,7 +167,7 @@
     static constexpr int kNumJoins = 3;
 
     SkTArray<SkPath> fPolygons;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/quadpaths.cpp b/gm/quadpaths.cpp
index 408d6c1..5dbb73a 100644
--- a/gm/quadpaths.cpp
+++ b/gm/quadpaths.cpp
@@ -149,7 +149,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class QuadClosePathGM : public GM {
@@ -279,7 +279,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/readpixels.cpp b/gm/readpixels.cpp
index 02afa7c..20562a9 100644
--- a/gm/readpixels.cpp
+++ b/gm/readpixels.cpp
@@ -185,7 +185,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ReadPixelsGM; )
 
@@ -249,7 +249,7 @@
     static const int kEncodedWidth = 8;
     static const int kEncodedHeight = 8;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ReadPixelsCodecGM; )
 
@@ -315,6 +315,6 @@
 
 private:
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ReadPixelsPictureGM; )
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index ba23724..7dbd164 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -257,7 +257,7 @@
     sk_sp<SkImage> fGradImgs[kNumGradImages];
     sk_sp<SkImage> fSmallImg;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new RectangleTexture;)
diff --git a/gm/rects.cpp b/gm/rects.cpp
index 63153d4..be1ed47 100644
--- a/gm/rects.cpp
+++ b/gm/rects.cpp
@@ -295,7 +295,7 @@
     SkTArray<SkMatrix> fMatrices;
     SkTArray<SkRect>   fRects;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index 8fd6ddd..482e3ae 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -109,7 +109,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/roundrects.cpp b/gm/roundrects.cpp
index 4f4a8cb..d05de86 100644
--- a/gm/roundrects.cpp
+++ b/gm/roundrects.cpp
@@ -375,7 +375,7 @@
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/rrect.cpp b/gm/rrect.cpp
index 275afb4..c9a536d 100644
--- a/gm/rrect.cpp
+++ b/gm/rrect.cpp
@@ -172,7 +172,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new RRectGM; )
diff --git a/gm/rrects.cpp b/gm/rrects.cpp
index f23973f..9481643 100644
--- a/gm/rrects.cpp
+++ b/gm/rrects.cpp
@@ -196,7 +196,7 @@
     static constexpr int kNumRRects = kNumSimpleCases + kNumComplexCases;
     SkRRect fRRects[kNumRRects];
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 // Radii for the various test cases. Order is UL, UR, LR, LL
diff --git a/gm/sample_matrix_constant.cpp b/gm/sample_matrix_constant.cpp
index 409ff1d..c96ac76 100644
--- a/gm/sample_matrix_constant.cpp
+++ b/gm/sample_matrix_constant.cpp
@@ -40,7 +40,7 @@
 
 private:
     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 class GLSLSampleMatrixConstantEffect : public GrGLSLFragmentProcessor {
diff --git a/gm/sample_matrix_variable.cpp b/gm/sample_matrix_variable.cpp
index 9f2ab18..4932460 100644
--- a/gm/sample_matrix_variable.cpp
+++ b/gm/sample_matrix_variable.cpp
@@ -44,7 +44,7 @@
     float fXOffset;
     float fYOffset;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
     friend class GLSLSampleMatrixVariableEffect;
 };
 
diff --git a/gm/samplelocations.cpp b/gm/samplelocations.cpp
index e2cf0ac..0ceda73 100644
--- a/gm/samplelocations.cpp
+++ b/gm/samplelocations.cpp
@@ -121,7 +121,7 @@
 
     class Impl;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class SampleLocationsTestProcessor::Impl : public GrGLSLGeometryProcessor {
@@ -304,7 +304,7 @@
 
     friend class ::GrOpMemoryPool; // for ctor
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp
index d4af469..bc435e9 100644
--- a/gm/samplerstress.cpp
+++ b/gm/samplerstress.cpp
@@ -142,7 +142,7 @@
     sk_sp<SkShader> fShader;
     sk_sp<SkMaskFilter> fMaskFilter;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/savelayer.cpp b/gm/savelayer.cpp
index 9ce7be1..6b6854f 100644
--- a/gm/savelayer.cpp
+++ b/gm/savelayer.cpp
@@ -93,7 +93,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new UnclippedSaveLayerGM;)
 
diff --git a/gm/scaledemoji.cpp b/gm/scaledemoji.cpp
index f9fc91c..11b07b5 100644
--- a/gm/scaledemoji.cpp
+++ b/gm/scaledemoji.cpp
@@ -83,7 +83,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class ScaledEmojiPosGM : public GM {
@@ -142,7 +142,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/scaledemoji_rendering.cpp b/gm/scaledemoji_rendering.cpp
index cf2407d..f1f7103 100644
--- a/gm/scaledemoji_rendering.cpp
+++ b/gm/scaledemoji_rendering.cpp
@@ -73,7 +73,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/scaledstrokes.cpp b/gm/scaledstrokes.cpp
index 1bc081b..be8eb61 100644
--- a/gm/scaledstrokes.cpp
+++ b/gm/scaledstrokes.cpp
@@ -81,7 +81,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new ScaledStrokesGM; )
diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp
index 864ee66..0bfe8c7 100644
--- a/gm/shadertext3.cpp
+++ b/gm/shadertext3.cpp
@@ -137,7 +137,7 @@
 
 private:
     SkBitmap fBmp;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/shapes.cpp b/gm/shapes.cpp
index f8300b5..f11b02c 100644
--- a/gm/shapes.cpp
+++ b/gm/shapes.cpp
@@ -94,7 +94,7 @@
     int                  fSimpleShapeCount;
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class SimpleShapesGM : public ShapesGM {
@@ -126,7 +126,7 @@
         }
     }
 
-    typedef ShapesGM INHERITED;
+    using INHERITED = ShapesGM;
 };
 
 class InnerShapesGM : public ShapesGM {
@@ -161,7 +161,7 @@
         }
     }
 
-    typedef ShapesGM INHERITED;
+    using INHERITED = ShapesGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/showmiplevels.cpp b/gm/showmiplevels.cpp
index 7647d27..0f121fa 100644
--- a/gm/showmiplevels.cpp
+++ b/gm/showmiplevels.cpp
@@ -193,7 +193,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ShowMipLevels(255); )
 DEF_GM( return new ShowMipLevels(256); )
@@ -306,7 +306,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ShowMipLevels2(255, 255); )
 DEF_GM( return new ShowMipLevels2(256, 255); )
@@ -369,6 +369,6 @@
         return r.height() + 10;
     }
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ShowMipLevels3; )
diff --git a/gm/simple_magnification.cpp b/gm/simple_magnification.cpp
index 3e41798..1cbcef6 100644
--- a/gm/simple_magnification.cpp
+++ b/gm/simple_magnification.cpp
@@ -134,7 +134,7 @@
     static const int kImgSize = 33;
     static const int kPad = 2;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp
index 3b28652..cf4c9eb 100644
--- a/gm/simpleaaclip.cpp
+++ b/gm/simpleaaclip.cpp
@@ -197,7 +197,7 @@
     SkPath fBasePath;       // fBase as a round rect
     SkPath fRectPath;       // fRect as a round rect
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/simplerect.cpp b/gm/simplerect.cpp
index 92a7b6d..7dba895 100644
--- a/gm/simplerect.cpp
+++ b/gm/simplerect.cpp
@@ -53,6 +53,6 @@
 
 private:
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new SimpleRectGM;)
diff --git a/gm/smallpaths.cpp b/gm/smallpaths.cpp
index 5cd2748..c121cc4 100644
--- a/gm/smallpaths.cpp
+++ b/gm/smallpaths.cpp
@@ -393,7 +393,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new SmallPathsGM;)
diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp
index 8d76843..99db186 100644
--- a/gm/spritebitmap.cpp
+++ b/gm/spritebitmap.cpp
@@ -93,6 +93,6 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new SpriteBitmapGM; )
diff --git a/gm/stlouisarch.cpp b/gm/stlouisarch.cpp
index 1e348cb..4166eb8 100644
--- a/gm/stlouisarch.cpp
+++ b/gm/stlouisarch.cpp
@@ -91,7 +91,7 @@
 
 private:
     SkTArray<SkPath> fPaths;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/stringart.cpp b/gm/stringart.cpp
index 0f766c9..5d53026 100644
--- a/gm/stringart.cpp
+++ b/gm/stringart.cpp
@@ -85,7 +85,7 @@
 private:
     int fNumSteps;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new StringArtGM; )
@@ -156,7 +156,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new SkottieGM; )
 #endif
diff --git a/gm/strokedlines.cpp b/gm/strokedlines.cpp
index 50af641..00f8ed9 100644
--- a/gm/strokedlines.cpp
+++ b/gm/strokedlines.cpp
@@ -232,7 +232,7 @@
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/strokerect.cpp b/gm/strokerect.cpp
index ce43d8d..364f588 100644
--- a/gm/strokerect.cpp
+++ b/gm/strokerect.cpp
@@ -119,7 +119,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new StrokeRectGM;)
 
diff --git a/gm/strokerect_anisotropic.cpp b/gm/strokerect_anisotropic.cpp
index aecea30..2123130 100644
--- a/gm/strokerect_anisotropic.cpp
+++ b/gm/strokerect_anisotropic.cpp
@@ -76,7 +76,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new StrokeRectAnisotropicGM;)
 
diff --git a/gm/strokerects.cpp b/gm/strokerects.cpp
index 2f1637e..d14423f 100644
--- a/gm/strokerects.cpp
+++ b/gm/strokerects.cpp
@@ -76,7 +76,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index 51fd97f..ecb50eb 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -89,7 +89,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 /* See
@@ -169,7 +169,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class TeenyStrokesGM : public skiagm::GM {
@@ -204,7 +204,7 @@
         line(0.000002f, canvas, SK_ColorBLACK);
     }
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_SIMPLE_GM(CubicStroke, canvas, 384, 384) {
@@ -331,7 +331,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -436,7 +436,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class Strokes4GM : public skiagm::GM {
@@ -463,7 +463,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // Test stroking for curves that produce degenerate tangents when t is 0 or 1 (see bug 4191)
@@ -517,7 +517,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 
diff --git a/gm/surface.cpp b/gm/surface.cpp
index 0c1019b..afed502 100644
--- a/gm/surface.cpp
+++ b/gm/surface.cpp
@@ -114,7 +114,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new SurfacePropsGM )
 
@@ -161,7 +161,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new NewSurfaceGM )
 
diff --git a/gm/tablecolorfilter.cpp b/gm/tablecolorfilter.cpp
index 5b6fa86..08f71a6 100644
--- a/gm/tablecolorfilter.cpp
+++ b/gm/tablecolorfilter.cpp
@@ -204,7 +204,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new TableColorFilterGM; )
 
diff --git a/gm/tallstretchedbitmaps.cpp b/gm/tallstretchedbitmaps.cpp
index a874981..d0e3ccf 100644
--- a/gm/tallstretchedbitmaps.cpp
+++ b/gm/tallstretchedbitmaps.cpp
@@ -105,7 +105,7 @@
         SkBitmap fBmp;
         int      fItemCnt;
     } fTallBmps[8];
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/testgradient.cpp b/gm/testgradient.cpp
index 9fa3925..808815c 100644
--- a/gm/testgradient.cpp
+++ b/gm/testgradient.cpp
@@ -70,7 +70,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // Register the GM
diff --git a/gm/texelsubset.cpp b/gm/texelsubset.cpp
index 97766f7..ae1cccd 100644
--- a/gm/texelsubset.cpp
+++ b/gm/texelsubset.cpp
@@ -222,7 +222,7 @@
     MipmapMode fMipmapMode;
     bool fUpscale;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new TexelSubset(Filter::kNearest, MipmapMode::kNone   , false);)
diff --git a/gm/textblob.cpp b/gm/textblob.cpp
index 4f482d8..60cec2a 100644
--- a/gm/textblob.cpp
+++ b/gm/textblob.cpp
@@ -197,7 +197,7 @@
     SkTDArray<uint16_t> fGlyphs;
     sk_sp<SkTypeface>   fTypeface;
     const char*         fText;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new TextBlobGM("hamburgefons");)
diff --git a/gm/textblobblockreordering.cpp b/gm/textblobblockreordering.cpp
index b7a9cd8..0cb5f82 100644
--- a/gm/textblobblockreordering.cpp
+++ b/gm/textblobblockreordering.cpp
@@ -93,7 +93,7 @@
     static constexpr int kWidth = 275;
     static constexpr int kHeight = 200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobcolortrans.cpp b/gm/textblobcolortrans.cpp
index 4c8a105..1077160 100644
--- a/gm/textblobcolortrans.cpp
+++ b/gm/textblobcolortrans.cpp
@@ -97,7 +97,7 @@
     static constexpr int kWidth = 675;
     static constexpr int kHeight = 1600;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobgeometrychange.cpp b/gm/textblobgeometrychange.cpp
index 3c3f062..ab561dc 100644
--- a/gm/textblobgeometrychange.cpp
+++ b/gm/textblobgeometrychange.cpp
@@ -72,7 +72,7 @@
     static constexpr int kWidth = 200;
     static constexpr int kHeight = 200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textbloblooper.cpp b/gm/textbloblooper.cpp
index 31de25b..f3e1bae 100644
--- a/gm/textbloblooper.cpp
+++ b/gm/textbloblooper.cpp
@@ -267,7 +267,7 @@
     sk_sp<SkTextBlob> fBlob;
     SkTArray<sk_sp<SkDrawLooper>> fLoopers;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobmixedsizes.cpp b/gm/textblobmixedsizes.cpp
index 111a2b6..b891c8f 100644
--- a/gm/textblobmixedsizes.cpp
+++ b/gm/textblobmixedsizes.cpp
@@ -185,7 +185,7 @@
 
     bool fUseDFT;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobrandomfont.cpp b/gm/textblobrandomfont.cpp
index 57dbdc1..22b6ee4 100644
--- a/gm/textblobrandomfont.cpp
+++ b/gm/textblobrandomfont.cpp
@@ -165,7 +165,7 @@
     static constexpr int kWidth = 2000;
     static constexpr int kHeight = 1600;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobshader.cpp b/gm/textblobshader.cpp
index bc5ade6..455667a 100644
--- a/gm/textblobshader.cpp
+++ b/gm/textblobshader.cpp
@@ -119,7 +119,7 @@
     sk_sp<SkTextBlob>   fBlob;
     sk_sp<SkShader>     fShader;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new TextBlobShaderGM;)
diff --git a/gm/textblobtransforms.cpp b/gm/textblobtransforms.cpp
index 335b74c..bee808a 100644
--- a/gm/textblobtransforms.cpp
+++ b/gm/textblobtransforms.cpp
@@ -170,7 +170,7 @@
     static constexpr int kWidth = 1000;
     static constexpr int kHeight = 1200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobuseaftergpufree.cpp b/gm/textblobuseaftergpufree.cpp
index aa23381..b3aab7f 100644
--- a/gm/textblobuseaftergpufree.cpp
+++ b/gm/textblobuseaftergpufree.cpp
@@ -61,7 +61,7 @@
     static constexpr int kWidth = 200;
     static constexpr int kHeight = 200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/thinrects.cpp b/gm/thinrects.cpp
index 6e562f6..e0316c2 100644
--- a/gm/thinrects.cpp
+++ b/gm/thinrects.cpp
@@ -119,7 +119,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/thinstrokedrects.cpp b/gm/thinstrokedrects.cpp
index 0e6743d..ba91499 100644
--- a/gm/thinstrokedrects.cpp
+++ b/gm/thinstrokedrects.cpp
@@ -76,7 +76,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/tiledscaledbitmap.cpp b/gm/tiledscaledbitmap.cpp
index ae9744e..557c7b7 100644
--- a/gm/tiledscaledbitmap.cpp
+++ b/gm/tiledscaledbitmap.cpp
@@ -73,7 +73,7 @@
 private:
     SkBitmap fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index 2aee0be..70f1b59 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -141,7 +141,7 @@
 private:
     sk_sp<SkImage> fBitmap, fCheckerboard;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index fe39744..a947f5b 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -160,7 +160,7 @@
 
 private:
     bool fPowerOfTwoSize;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new TilingGM(true); )
 DEF_GM( return new TilingGM(false); )
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 88d8c8b..e66ef23 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -159,7 +159,7 @@
 
 private:
     bool fPowerOfTwoSize;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 constexpr int gWidth = 32;
diff --git a/gm/trickycubicstrokes.cpp b/gm/trickycubicstrokes.cpp
index faf5c09..a46413c 100644
--- a/gm/trickycubicstrokes.cpp
+++ b/gm/trickycubicstrokes.cpp
@@ -137,7 +137,7 @@
 
 private:
     SkPaint fStrokePaint;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new TrickyCubicStrokesGM; )
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index 437768b..33fe37a 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -146,7 +146,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new TypefaceStylesGM(false); )
diff --git a/gm/variedtext.cpp b/gm/variedtext.cpp
index 37c6ac4..d96ee49 100644
--- a/gm/variedtext.cpp
+++ b/gm/variedtext.cpp
@@ -163,7 +163,7 @@
     SkPoint         fPositions[kCnt];
     SkRect          fClipRects[kCnt];
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new VariedTextGM(false, false);)
diff --git a/gm/vertices.cpp b/gm/vertices.cpp
index f71c108..61ea6db 100644
--- a/gm/vertices.cpp
+++ b/gm/vertices.cpp
@@ -205,7 +205,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/video_decoder.cpp b/gm/video_decoder.cpp
index e6785b8..c2480f0 100644
--- a/gm/video_decoder.cpp
+++ b/gm/video_decoder.cpp
@@ -60,7 +60,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new VideoDecoderGM; )
 
diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp
index d8f7a09..960d6a6 100644
--- a/gm/wacky_yuv_formats.cpp
+++ b/gm/wacky_yuv_formats.cpp
@@ -1484,7 +1484,7 @@
     sk_sp<SkColorSpace>        fTargetColorSpace;
     bool                       fGpuGeneratedImages = false;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -1674,7 +1674,7 @@
     sk_sp<SkImage> fImages[2][2];
     sk_sp<SkColorSpace> fTargetColorSpace;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVMakeColorSpaceGM();)
@@ -1799,6 +1799,6 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new YUVSplitterGM; )
diff --git a/gm/widebuttcaps.cpp b/gm/widebuttcaps.cpp
index b2df5fe..423b9ad 100644
--- a/gm/widebuttcaps.cpp
+++ b/gm/widebuttcaps.cpp
@@ -78,7 +78,7 @@
 
 private:
     SkPaint fStrokePaint;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new WideButtCaps; )
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index 1f96dbb..5f69249 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -218,7 +218,7 @@
     SkBitmap        fBitmap;
     sk_sp<SkImage>  fCheckerboard;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index 06a2c7e..41ea5c3 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -294,6 +294,6 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new XfermodesGM; )
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index 89f5e02..425d3b9 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -147,7 +147,7 @@
     sk_sp<SkShader> fSrc;
     sk_sp<SkShader> fDst;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index 4ab9bf1..d478978 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -218,7 +218,7 @@
     sk_sp<SkShader> fBGShader;
     sk_sp<SkShader> fBmpShader;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/xform.cpp b/gm/xform.cpp
index d169017..5ed89c2 100644
--- a/gm/xform.cpp
+++ b/gm/xform.cpp
@@ -100,7 +100,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new XformGM; )
 
diff --git a/gm/ycbcrimage.cpp b/gm/ycbcrimage.cpp
index 99985b1..7ae5771 100644
--- a/gm/ycbcrimage.cpp
+++ b/gm/ycbcrimage.cpp
@@ -108,7 +108,7 @@
 
     sk_sp<SkImage> fYCbCrImage;
 
-    typedef GpuGM INHERITED;
+    using INHERITED = GpuGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp
index 6613f40..80d1887 100644
--- a/gm/yuvtorgbeffect.cpp
+++ b/gm/yuvtorgbeffect.cpp
@@ -149,7 +149,7 @@
     static constexpr SkScalar kTestPad = 10.f;
     static constexpr SkScalar kColorSpaceOffset = 36.f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVtoRGBEffect;)
@@ -260,7 +260,7 @@
     static constexpr SkScalar kTestPad = 10.f;
     static constexpr SkScalar kColorSpaceOffset = 36.f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVNV12toRGBEffect;)
@@ -380,7 +380,7 @@
 
     static constexpr SkScalar kTestPad = 10.f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVtoRGBSubsetEffect;)