Enforce IWYU on skottie and sksg

While using these modules in G3, I ran into a few cases where missing
#includes caused problems, so I decided to enforce IWYU on the
entirety of both modules.

A few non-Skottie files also needed updating as a result or in
unrelated but similar errors.

Change-Id: I453afd156291136dc8d9acebb68512a78eb64e36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/818104
Auto-Submit: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
diff --git a/bench/DecodeBench.cpp b/bench/DecodeBench.cpp
index 0eb5fdf..e2d46cb 100644
--- a/bench/DecodeBench.cpp
+++ b/bench/DecodeBench.cpp
@@ -7,6 +7,7 @@
 
 #include "bench/Benchmark.h"
 #include "include/core/SkBitmap.h"
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkPicture.h"
 #include "include/core/SkPictureRecorder.h"
 #include "modules/skottie/include/Skottie.h"
diff --git a/modules/canvaskit/skottie_bindings.cpp b/modules/canvaskit/skottie_bindings.cpp
index 1607a6d..d17ca74 100644
--- a/modules/canvaskit/skottie_bindings.cpp
+++ b/modules/canvaskit/skottie_bindings.cpp
@@ -15,6 +15,7 @@
 #include "modules/canvaskit/WasmCommon.h"
 #include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/include/SkottieProperty.h"
+#include "modules/skottie/include/SlotManager.h"
 #include "modules/skottie/utils/SkottieUtils.h"
 #include "modules/skottie/utils/TextEditor.h"
 #include "modules/skparagraph/include/Paragraph.h"
diff --git a/modules/skottie/BUILD.bazel b/modules/skottie/BUILD.bazel
index a02a47f..3bd9eed 100644
--- a/modules/skottie/BUILD.bazel
+++ b/modules/skottie/BUILD.bazel
@@ -14,6 +14,10 @@
         "//src/utils:json_srcs",
     ],
     hdrs = ["//modules/skottie/include:hdrs"],
+    defines = [
+        "SK_ENABLE_SKOTTIE_SKSLEFFECT",
+        "SK_ENABLE_SKOTTIE",
+    ],
     visibility = ["//:__subpackages__"],
     deps = [
         "//:skia_internal",
@@ -95,6 +99,10 @@
         "//src/utils:json_srcs",
     ],
     hdrs = ["//modules/skottie/include:hdrs"],
+    defines = [
+        "SK_ENABLE_SKOTTIE_SKSLEFFECT",
+        "SK_ENABLE_SKOTTIE",
+    ],
     features = ["layering_check"],
     visibility = ["//:__subpackages__"],
     deps = [
diff --git a/modules/skottie/gm/ExternalProperties.cpp b/modules/skottie/gm/ExternalProperties.cpp
index d910efd..c0724aa 100644
--- a/modules/skottie/gm/ExternalProperties.cpp
+++ b/modules/skottie/gm/ExternalProperties.cpp
@@ -7,6 +7,7 @@
 
 #include "gm/gm.h"
 #include "include/core/SkColor.h"
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkStream.h"
 #include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/include/SkottieProperty.h"
diff --git a/modules/skottie/gm/SkottieGM.cpp b/modules/skottie/gm/SkottieGM.cpp
index 4183ec5..446d8f4 100644
--- a/modules/skottie/gm/SkottieGM.cpp
+++ b/modules/skottie/gm/SkottieGM.cpp
@@ -9,6 +9,7 @@
 #include "include/codec/SkCodec.h"
 #include "include/codec/SkGifDecoder.h"
 #include "include/core/SkColor.h"
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkStream.h"
 #include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/include/SkottieProperty.h"
diff --git a/modules/skottie/include/Skottie.h b/modules/skottie/include/Skottie.h
index 2cf6cdc..632575a 100644
--- a/modules/skottie/include/Skottie.h
+++ b/modules/skottie/include/Skottie.h
@@ -8,24 +8,26 @@
 #ifndef Skottie_DEFINED
 #define Skottie_DEFINED
 
-#include "include/core/SkFontMgr.h"
 #include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/core/SkSize.h"
 #include "include/core/SkString.h"
 #include "include/core/SkTypes.h"
-#include "modules/skottie/include/ExternalLayer.h"
-#include "modules/skottie/include/SkottieProperty.h"
-#include "modules/skottie/include/SlotManager.h"
 #include "modules/skresources/include/SkResources.h"
 
-#include <memory>
+// TODO(kjlubick) update clients and then remove the following:
+#include "include/core/SkFontMgr.h"  // IWYU pragma: keep
+#include "modules/skottie/include/ExternalLayer.h"  // IWYU pragma: keep
+#include "modules/skottie/include/SkottieProperty.h"  // IWYU pragma: keep
+#include "modules/skottie/include/SlotManager.h"  // IWYU pragma: keep
+
+#include <cstddef>
+#include <cstdint>
 #include <vector>
 
 class SkCanvas;
-struct SkRect;
 class SkStream;
-
-namespace skjson { class ObjectValue; }
+struct SkRect;
 
 namespace sksg {
 
diff --git a/modules/skottie/include/SkottieProperty.h b/modules/skottie/include/SkottieProperty.h
index 087eb57..c489eca 100644
--- a/modules/skottie/include/SkottieProperty.h
+++ b/modules/skottie/include/SkottieProperty.h
@@ -14,13 +14,20 @@
 #include "include/core/SkPoint.h"
 #include "include/core/SkRect.h"
 #include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/core/SkSpan.h"
+#include "include/core/SkString.h"
 #include "include/core/SkTypeface.h"
+#include "include/private/base/SkAPI.h"
 #include "include/utils/SkTextUtils.h"
 #include "modules/skottie/include/TextShaper.h"
 
+#include <cstddef>
+#include <cstdint>
 #include <functional>
-#include <vector>
+#include <limits>
+#include <memory>
+#include <utility>
 
 class SkCanvas;
 
diff --git a/modules/skottie/include/SlotManager.h b/modules/skottie/include/SlotManager.h
index f45ef98..b7de1aa 100644
--- a/modules/skottie/include/SlotManager.h
+++ b/modules/skottie/include/SlotManager.h
@@ -9,24 +9,22 @@
 #define SlotManager_DEFINED
 
 #include "include/core/SkColor.h"
+#include "include/core/SkRefCnt.h"
 #include "include/core/SkString.h"
+#include "include/private/base/SkAPI.h"
 #include "include/private/base/SkTArray.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/text/TextAdapter.h"
 #include "src/core/SkTHash.h"
 
 #include <optional>
 
-namespace skjson {
-class ObjectValue;
-}
+struct SkV2;
 
 namespace skresources {
 class ImageAsset;
 }
 
-namespace sksg {
-class Node;
-}
 namespace skottie {
 
 struct TextPropertyValue;
@@ -35,7 +33,6 @@
 class AnimationBuilder;
 class SceneGraphRevalidator;
 class AnimatablePropertyContainer;
-class TextAdapter;
 } // namespace internal
 
 using namespace skia_private;
diff --git a/modules/skottie/include/TextShaper.h b/modules/skottie/include/TextShaper.h
index 7c12f8c..bb614b3 100644
--- a/modules/skottie/include/TextShaper.h
+++ b/modules/skottie/include/TextShaper.h
@@ -11,16 +11,21 @@
 #include "include/core/SkFont.h"
 #include "include/core/SkPoint.h"
 #include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkTypes.h"
 #include "include/private/base/SkTypeTraits.h"
 #include "include/utils/SkTextUtils.h"
 
+#include <cstddef>
+#include <cstdint>
+#include <type_traits>
 #include <vector>
 
 class SkCanvas;
 class SkFontMgr;
-class SkTypeface;
+class SkPaint;
 class SkString;
-
+class SkTypeface;
 struct SkRect;
 
 namespace skottie {
diff --git a/modules/skottie/src/BlendModes.cpp b/modules/skottie/src/BlendModes.cpp
index f26d6dd..cc55fea 100644
--- a/modules/skottie/src/BlendModes.cpp
+++ b/modules/skottie/src/BlendModes.cpp
@@ -4,13 +4,22 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-
 #include "include/core/SkBlendMode.h"
 #include "include/core/SkBlender.h"
+#include "include/core/SkData.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkString.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+#include "src/utils/SkJSON.h"
+
+#include <array>
+#include <cstddef>
+#include <utility>
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/Camera.cpp b/modules/skottie/src/Camera.cpp
index 3d25c20..6685def 100644
--- a/modules/skottie/src/Camera.cpp
+++ b/modules/skottie/src/Camera.cpp
@@ -5,11 +5,17 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkPoint.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkFloatingPoint.h"
 #include "modules/skottie/src/Camera.h"
-
-#include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/sksg/include/SkSGTransform.h"
+#include "src/utils/SkJSON.h"
+
+#include <algorithm>
+#include <cmath>
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/Camera.h b/modules/skottie/src/Camera.h
index 3609048..14af1ea 100644
--- a/modules/skottie/src/Camera.h
+++ b/modules/skottie/src/Camera.h
@@ -8,10 +8,22 @@
 #ifndef SkottieCamera_DEFINED
 #define SkottieCamera_DEFINED
 
+#include "include/core/SkM44.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSize.h"
+#include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/Transform.h"
 
+namespace skjson {
+class ObjectValue;
+}
+namespace sksg {
+class Transform;
+}
+
 namespace skottie {
 namespace internal {
+class AnimationBuilder;
 
 class CameraAdaper final : public TransformAdapter3D {
 public:
diff --git a/modules/skottie/src/Composition.cpp b/modules/skottie/src/Composition.cpp
index 572bff6..60e7748 100644
--- a/modules/skottie/src/Composition.cpp
+++ b/modules/skottie/src/Composition.cpp
@@ -7,14 +7,20 @@
 
 #include "modules/skottie/src/Composition.h"
 
-#include "include/core/SkCanvas.h"
+#include "include/core/SkString.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/Camera.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/sksg/include/SkSGGroup.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+#include "modules/sksg/include/SkSGTransform.h"
+#include "src/utils/SkJSON.h"
 
 #include <algorithm>
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/Composition.h b/modules/skottie/src/Composition.h
index fd92ef62..8b37aa5 100644
--- a/modules/skottie/src/Composition.h
+++ b/modules/skottie/src/Composition.h
@@ -8,15 +8,26 @@
 #ifndef SkottieComposition_DEFINED
 #define SkottieComposition_DEFINED
 
-#include "modules/skottie/src/SkottiePriv.h"
-
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSize.h"
+#include "include/private/base/SkNoncopyable.h"
 #include "modules/skottie/src/Layer.h"
 #include "src/core/SkTHash.h"
 
+#include <cstddef>
 #include <vector>
 
+namespace skjson {
+class ObjectValue;
+}
+namespace sksg {
+class RenderNode;
+class Transform;
+}  // namespace sksg
+
 namespace skottie {
 namespace internal {
+class AnimationBuilder;
 
 class CompositionBuilder final : SkNoncopyable {
 public:
diff --git a/modules/skottie/src/Layer.cpp b/modules/skottie/src/Layer.cpp
index a780a9b..1691a84 100644
--- a/modules/skottie/src/Layer.cpp
+++ b/modules/skottie/src/Layer.cpp
@@ -7,14 +7,27 @@
 
 #include "modules/skottie/src/Layer.h"
 
+#include "include/core/SkBlendMode.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkM44.h"
+#include "include/core/SkPathTypes.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkTileMode.h"
+#include "include/private/base/SkAssert.h"
 #include "include/private/base/SkTArray.h"
-#include "modules/skottie/src/Camera.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SkottieProperty.h"
 #include "modules/skottie/src/Composition.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/effects/Effects.h"
 #include "modules/skottie/src/effects/MotionBlurEffect.h"
 #include "modules/sksg/include/SkSGClipEffect.h"
 #include "modules/sksg/include/SkSGDraw.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
 #include "modules/sksg/include/SkSGGroup.h"
 #include "modules/sksg/include/SkSGMaskEffect.h"
 #include "modules/sksg/include/SkSGMerge.h"
@@ -24,6 +37,12 @@
 #include "modules/sksg/include/SkSGRenderEffect.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 #include "modules/sksg/include/SkSGTransform.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
+#include <vector>
+
+struct SkSize;
 
 using namespace skia_private;
 
@@ -469,7 +488,7 @@
 
     // Clip layers with explicit dimensions.
     float w = 0, h = 0;
-    if (Parse<float>(fJlayer["w"], &w) && Parse<float>(fJlayer["h"], &h)) {
+    if (::skottie::Parse<float>(fJlayer["w"], &w) && ::skottie::Parse<float>(fJlayer["h"], &h)) {
         layer = sksg::ClipEffect::Make(std::move(layer),
                                        sksg::Rect::Make(SkRect::MakeWH(w, h)),
 #ifdef SK_LEGACY_SKOTTIE_CLIPPING
diff --git a/modules/skottie/src/Layer.h b/modules/skottie/src/Layer.h
index 9565a59..9164c6d 100644
--- a/modules/skottie/src/Layer.h
+++ b/modules/skottie/src/Layer.h
@@ -8,8 +8,21 @@
 #ifndef SkottieLayer_DEFINED
 #define SkottieLayer_DEFINED
 
+#include <cstddef>
+#include <cstdint>
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/SkottiePriv.h"
 
+struct SkSize;
+
+namespace skjson {
+class ObjectValue;
+}
+namespace sksg {
+class RenderNode;
+class Transform;
+}  // namespace sksg
+
 namespace skottie {
 namespace internal {
 
diff --git a/modules/skottie/src/Path.cpp b/modules/skottie/src/Path.cpp
index 2c3f514..9825dc6 100644
--- a/modules/skottie/src/Path.cpp
+++ b/modules/skottie/src/Path.cpp
@@ -5,11 +5,15 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkPath.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/sksg/include/SkSGPath.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/Skottie.cpp b/modules/skottie/src/Skottie.cpp
index fbb754b..8a0c65d 100644
--- a/modules/skottie/src/Skottie.cpp
+++ b/modules/skottie/src/Skottie.cpp
@@ -10,36 +10,44 @@
 #include "include/core/SkCanvas.h"
 #include "include/core/SkData.h"
 #include "include/core/SkFontMgr.h"
-#include "include/core/SkImage.h"
-#include "include/core/SkPaint.h"
-#include "include/core/SkPoint.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkRect.h"
 #include "include/core/SkStream.h"
-#include "include/private/base/SkTArray.h"
+#include "include/private/base/SkDebug.h"
+#include "include/private/base/SkFloatingPoint.h"
 #include "include/private/base/SkTPin.h"
 #include "include/private/base/SkTo.h"
 #include "modules/skottie/include/ExternalLayer.h"
 #include "modules/skottie/include/SkottieProperty.h"
+#include "modules/skottie/include/SlotManager.h"
+#include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/Composition.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
-#include "modules/skottie/src/Transform.h"
+#include "modules/skottie/src/Transform.h"  // IWYU pragma: keep
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/text/TextAdapter.h"
-#include "modules/sksg/include/SkSGInvalidationController.h"
 #include "modules/sksg/include/SkSGOpacityEffect.h"
-#include "modules/sksg/include/SkSGPaint.h"
-#include "modules/sksg/include/SkSGPath.h"
-#include "modules/sksg/include/SkSGRenderEffect.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
-#include "modules/sksg/include/SkSGTransform.h"
+#include "src/core/SkTHash.h"
 #include "src/core/SkTraceEvent.h"
+#include "src/utils/SkJSON.h"
 
+#include <algorithm>
 #include <chrono>
 #include <cmath>
+#include <cstdarg>
+#include <cstdio>
+#include <cstring>
+#include <functional>
 #include <memory>
 #include <ratio>
+#include <utility>
 
-#include <stdlib.h>
+namespace sksg {
+class Color;
+}
 
 namespace skottie {
 
diff --git a/modules/skottie/src/SkottieJson.cpp b/modules/skottie/src/SkottieJson.cpp
index 7cee8c5..ffc7440 100644
--- a/modules/skottie/src/SkottieJson.cpp
+++ b/modules/skottie/src/SkottieJson.cpp
@@ -7,15 +7,16 @@
 
 #include "modules/skottie/src/SkottieJson.h"
 
-#include "include/core/SkData.h"
-#include "include/core/SkPath.h"
+#include "include/core/SkM44.h"
 #include "include/core/SkPoint.h"
 #include "include/core/SkScalar.h"
-#include "include/core/SkStream.h"
 #include "include/core/SkString.h"
+#include "include/private/base/SkTo.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "src/utils/SkJSON.h"
+
+#include <cstddef>
 #include <limits>
-#include <vector>
 
 namespace skottie {
 
diff --git a/modules/skottie/src/SkottieJson.h b/modules/skottie/src/SkottieJson.h
index 3d75ad4..feaa343 100644
--- a/modules/skottie/src/SkottieJson.h
+++ b/modules/skottie/src/SkottieJson.h
@@ -8,12 +8,11 @@
 #ifndef SkottieJson_DEFINED
 #define SkottieJson_DEFINED
 
-#include "include/core/SkRefCnt.h"
-#include "src/utils/SkJSON.h"
-
-class SkData;
-class SkStream;
-class SkString;
+namespace skjson {
+class ObjectValue;
+class StringValue;
+class Value;
+}  // namespace skjson
 
 namespace skottie {
 
diff --git a/modules/skottie/src/SkottiePriv.h b/modules/skottie/src/SkottiePriv.h
index 24cf109..087582c 100644
--- a/modules/skottie/src/SkottiePriv.h
+++ b/modules/skottie/src/SkottiePriv.h
@@ -11,9 +11,11 @@
 #include "include/core/SkRefCnt.h"
 #include "modules/skottie/include/Skottie.h"
 
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkFontStyle.h"
 #include "include/core/SkString.h"
 #include "include/core/SkTypeface.h"
+#include "modules/skottie/include/ExternalLayer.h"
 #include "modules/skottie/include/SkottieProperty.h"
 #include "modules/skottie/include/SlotManager.h"
 #include "modules/skottie/src/animator/Animator.h"
@@ -23,8 +25,6 @@
 
 #include <vector>
 
-class SkFontMgr;
-
 namespace skjson {
 class ArrayValue;
 class ObjectValue;
diff --git a/modules/skottie/src/SkottieTool.cpp b/modules/skottie/src/SkottieTool.cpp
index 071abde..f46b3b7 100644
--- a/modules/skottie/src/SkottieTool.cpp
+++ b/modules/skottie/src/SkottieTool.cpp
@@ -10,35 +10,59 @@
 #include "include/codec/SkPngDecoder.h"
 #include "include/codec/SkWebpDecoder.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkData.h"
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkGraphics.h"
-#include "include/core/SkPicture.h"
-#include "include/core/SkPictureRecorder.h"
-#include "include/core/SkSerialProcs.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkImageInfo.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPixmap.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "include/core/SkStream.h"
+#include "include/core/SkString.h"
 #include "include/core/SkSurface.h"
+#include "include/core/SkTypes.h"
 #include "include/encode/SkPngEncoder.h"
+#include "include/private/base/SkDebug.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/ExternalLayer.h"
 #include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/utils/SkottieUtils.h"
 #include "modules/skresources/include/SkResources.h"
 #include "src/core/SkOSFile.h"
 #include "src/core/SkTaskGroup.h"
-#include "src/image/SkImage_Base.h"
 #include "src/utils/SkOSPath.h"
 #include "tools/flags/CommandLineFlags.h"
 
-#include <algorithm>
-#include <chrono>
-#include <future>
-#include <numeric>
-#include <vector>
-
 #if !defined(CPU_ONLY)
-#include "include/gpu/GrContextOptions.h"
+#include "include/gpu/GpuTypes.h"
+#include "include/gpu/GrDirectContext.h"
+#include "include/gpu/GrTypes.h"
 #include "include/gpu/ganesh/SkSurfaceGanesh.h"
+#include "tools/gpu/ContextType.h"
 #include "tools/gpu/GrContextFactory.h"
 #endif
 
+#if !defined(CPU_ONLY) && !defined(GPU_ONLY)
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSerialProcs.h"
+#include "src/image/SkImage_Base.h"
+#endif
+
+#include <algorithm>
+#include <chrono>
+#include <cstdio>
+#include <cstring>
+#include <functional>
+#include <memory>
+#include <numeric>
+#include <utility>
+#include <vector>
+
 #if defined(HAVE_VIDEO_ENCODER)
     #include "experimental/ffmpeg/SkVideoEncoder.h"
     const char* formats_help = "Output format (png, skp, mp4, or null)";
@@ -453,14 +477,14 @@
     }
 
     OutputFormat fmt;
-    if (0 == strcmp(FLAGS_format[0],  "png")) {
+    if (0 == std::strcmp(FLAGS_format[0], "png")) {
         fmt = OutputFormat::kPNG;
-    } else if (0 == strcmp(FLAGS_format[0],  "skp")) {
+    } else if (0 == std::strcmp(FLAGS_format[0], "skp")) {
         fmt = OutputFormat::kSKP;
-    }  else if (0 == strcmp(FLAGS_format[0], "null")) {
+    } else if (0 == std::strcmp(FLAGS_format[0], "null")) {
         fmt = OutputFormat::kNull;
 #if defined(HAVE_VIDEO_ENCODER)
-    } else if (0 == strcmp(FLAGS_format[0],  "mp4")) {
+    } else if (0 == std::strcmp(FLAGS_format[0], "mp4")) {
         fmt = OutputFormat::kMP4;
 #endif
     } else {
diff --git a/modules/skottie/src/SlotManager.cpp b/modules/skottie/src/SlotManager.cpp
index fa49167..a14ab52 100644
--- a/modules/skottie/src/SlotManager.cpp
+++ b/modules/skottie/src/SlotManager.cpp
@@ -5,12 +5,20 @@
  * found in the LICENSE file.
  */
 
-#include "include/core/SkImage.h"
 #include "modules/skottie/include/SlotManager.h"
+
+#include "include/core/SkImage.h"
+#include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkSamplingOptions.h"
+#include "modules/skottie/include/SkottieProperty.h"
 #include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/text/TextAdapter.h"
 #include "modules/skresources/include/SkResources.h"
 
+#include <utility>
+
 class skottie::SlotManager::ImageAssetProxy final : public skresources::ImageAsset {
 public:
     explicit ImageAssetProxy(sk_sp<skresources::ImageAsset> asset)
diff --git a/modules/skottie/src/Transform.cpp b/modules/skottie/src/Transform.cpp
index 615bc17..4f9c743 100644
--- a/modules/skottie/src/Transform.cpp
+++ b/modules/skottie/src/Transform.cpp
@@ -7,9 +7,15 @@
 
 #include "modules/skottie/src/Transform.h"
 
-#include "modules/skottie/src/SkottieJson.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/sksg/include/SkSGTransform.h"
+#include "src/utils/SkJSON.h"
+
+#include <cmath>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/Transform.h b/modules/skottie/src/Transform.h
index 16a6ebe..40eff09 100644
--- a/modules/skottie/src/Transform.h
+++ b/modules/skottie/src/Transform.h
@@ -15,14 +15,16 @@
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/sksg/include/SkSGTransform.h"
 
-namespace skjson {
+#include <utility>
 
+namespace skjson {
 class ObjectValue;
 
-} // namespace skjson
+}  // namespace skjson
 
 namespace skottie {
 namespace internal {
+class AnimationBuilder;
 
 class TransformAdapter2D final : public DiscardableAdapterBase<TransformAdapter2D,
                                                                sksg::Matrix<SkMatrix>> {
diff --git a/modules/skottie/src/animator/Animator.cpp b/modules/skottie/src/animator/Animator.cpp
index 0aca340..6df2f84 100644
--- a/modules/skottie/src/animator/Animator.cpp
+++ b/modules/skottie/src/animator/Animator.cpp
@@ -7,9 +7,13 @@
 
 #include "modules/skottie/src/animator/Animator.h"
 
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/animator/KeyframeAnimator.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/animator/Animator.h b/modules/skottie/src/animator/Animator.h
index 4c6993e..f7f2021 100644
--- a/modules/skottie/src/animator/Animator.h
+++ b/modules/skottie/src/animator/Animator.h
@@ -17,7 +17,6 @@
 namespace skjson {
 
 class ObjectValue;
-class StringValue;
 
 } // namespace skjson
 
diff --git a/modules/skottie/src/animator/KeyframeAnimator.cpp b/modules/skottie/src/animator/KeyframeAnimator.cpp
index 7e406af..93ab157 100644
--- a/modules/skottie/src/animator/KeyframeAnimator.cpp
+++ b/modules/skottie/src/animator/KeyframeAnimator.cpp
@@ -7,7 +7,11 @@
 
 #include "modules/skottie/src/animator/KeyframeAnimator.h"
 
+#include "include/private/base/SkTo.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "src/utils/SkJSON.h"
+
+#include <cstddef>
 
 #define DUMP_KF_RECORDS 0
 
diff --git a/modules/skottie/src/animator/KeyframeAnimator.h b/modules/skottie/src/animator/KeyframeAnimator.h
index 0cdac96..5b6737e 100644
--- a/modules/skottie/src/animator/KeyframeAnimator.h
+++ b/modules/skottie/src/animator/KeyframeAnimator.h
@@ -10,10 +10,13 @@
 
 #include "include/core/SkCubicMap.h"
 #include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/private/base/SkAssert.h"
 #include "include/private/base/SkNoncopyable.h"
-#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/animator/Animator.h"
 
+#include <cstdint>
+#include <utility>
 #include <vector>
 
 namespace skjson {
@@ -22,6 +25,10 @@
 class Value;
 } // namespace skjson
 
+namespace skottie {
+class ExpressionManager;
+}
+
 namespace skottie::internal {
 
 class AnimationBuilder;
diff --git a/modules/skottie/src/animator/ScalarKeyframeAnimator.cpp b/modules/skottie/src/animator/ScalarKeyframeAnimator.cpp
index a299bf1..c56d60d 100644
--- a/modules/skottie/src/animator/ScalarKeyframeAnimator.cpp
+++ b/modules/skottie/src/animator/ScalarKeyframeAnimator.cpp
@@ -5,11 +5,21 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkCubicMap.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkString.h"
+#include "include/private/base/SkAssert.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SlotManager.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/animator/KeyframeAnimator.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
+#include <vector>
 
 namespace skottie::internal {
 
@@ -87,7 +97,7 @@
 
 
         bool parseValue(const AnimationBuilder&, const skjson::Value& jv) const override {
-            return Parse(jv, fTarget);
+            return ::skottie::Parse(jv, fTarget);
         }
 
     private:
@@ -95,7 +105,7 @@
                           const skjson::ObjectValue&,
                           const skjson::Value& jv,
                           Keyframe::Value* v) override {
-            return Parse(jv, &v->flt);
+            return ::skottie::Parse(jv, &v->flt);
         }
 
         ScalarValue* fTarget;
diff --git a/modules/skottie/src/animator/ShapeKeyframeAnimator.cpp b/modules/skottie/src/animator/ShapeKeyframeAnimator.cpp
index 79d59fc..478782c 100644
--- a/modules/skottie/src/animator/ShapeKeyframeAnimator.cpp
+++ b/modules/skottie/src/animator/ShapeKeyframeAnimator.cpp
@@ -5,11 +5,23 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkPath.h"
 #include "include/core/SkPathBuilder.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
+#include "include/private/base/SkTo.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/animator/VectorKeyframeAnimator.h"
+#include "src/utils/SkJSON.h"
+
+#include <cstddef>
+#include <vector>
+
+namespace skottie::internal {
+class AnimationBuilder;
+}
 
 namespace skottie {
 
diff --git a/modules/skottie/src/animator/TextKeyframeAnimator.cpp b/modules/skottie/src/animator/TextKeyframeAnimator.cpp
index c738e24..1a482c7 100644
--- a/modules/skottie/src/animator/TextKeyframeAnimator.cpp
+++ b/modules/skottie/src/animator/TextKeyframeAnimator.cpp
@@ -5,12 +5,23 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/SkottieJson.h"
-#include "modules/skottie/src/SkottieValue.h"
+#include "include/core/SkCubicMap.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkString.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SkottieProperty.h"
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/animator/KeyframeAnimator.h"
 #include "modules/skottie/src/text/TextValue.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
+#include <vector>
 
 namespace skottie::internal {
+class AnimationBuilder;
 
 namespace  {
 class TextKeyframeAnimator final : public KeyframeAnimator {
diff --git a/modules/skottie/src/animator/Vec2KeyframeAnimator.cpp b/modules/skottie/src/animator/Vec2KeyframeAnimator.cpp
index d0b73e0..f7c1829 100644
--- a/modules/skottie/src/animator/Vec2KeyframeAnimator.cpp
+++ b/modules/skottie/src/animator/Vec2KeyframeAnimator.cpp
@@ -6,14 +6,28 @@
  */
 
 #include "include/core/SkContourMeasure.h"
+#include "include/core/SkCubicMap.h"
+#include "include/core/SkM44.h"
 #include "include/core/SkPathBuilder.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkString.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SlotManager.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/animator/KeyframeAnimator.h"
+#include "src/utils/SkJSON.h"
 
+#include <algorithm>
 #include <cmath>
+#include <utility>
+#include <vector>
 
 namespace skottie::internal {
 
@@ -168,7 +182,7 @@
         }
 
         bool parseValue(const AnimationBuilder&, const skjson::Value& jv) const override {
-            return Parse(jv, fVecTarget);
+            return ::skottie::Parse(jv, fVecTarget);
         }
 
     private:
@@ -219,7 +233,7 @@
                           const skjson::Value& jv,
                           Keyframe::Value* v) override {
             Vec2KeyframeAnimator::SpatialValue val;
-            if (!Parse(jv, &val.v2)) {
+            if (!::skottie::Parse(jv, &val.v2)) {
                 return false;
             }
 
diff --git a/modules/skottie/src/animator/VectorKeyframeAnimator.cpp b/modules/skottie/src/animator/VectorKeyframeAnimator.cpp
index b42a82a..cfe7fd0 100644
--- a/modules/skottie/src/animator/VectorKeyframeAnimator.cpp
+++ b/modules/skottie/src/animator/VectorKeyframeAnimator.cpp
@@ -7,17 +7,29 @@
 
 #include "modules/skottie/src/animator/VectorKeyframeAnimator.h"
 
+#include "include/core/SkColor.h"
+#include "include/core/SkCubicMap.h"
+#include "include/core/SkM44.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkString.h"
 #include "include/core/SkTypes.h"
+#include "include/private/base/SkTFitsIn.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SlotManager.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
 #include "src/base/SkSafeMath.h"
 #include "src/base/SkVx.h"
+#include "src/utils/SkJSON.h"
 
 #include <algorithm>
+#include <cstdint>
 #include <cstring>
+#include <utility>
 
 namespace skottie {
 
diff --git a/modules/skottie/src/animator/VectorKeyframeAnimator.h b/modules/skottie/src/animator/VectorKeyframeAnimator.h
index 65868e1..fb1c38e 100644
--- a/modules/skottie/src/animator/VectorKeyframeAnimator.h
+++ b/modules/skottie/src/animator/VectorKeyframeAnimator.h
@@ -8,11 +8,25 @@
 #ifndef SkottieVectorKeyframeAnimator_DEFINED
 #define SkottieVectorKeyframeAnimator_DEFINED
 
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/animator/KeyframeAnimator.h"
 
+#include <cstddef>
 #include <vector>
 
+namespace skjson {
+class ArrayValue;
+class ObjectValue;
+class Value;
+}  // namespace skjson
+
+namespace skottie {
+class ExpressionManager;
+}
+
 namespace skottie::internal {
+class AnimationBuilder;
+class Animator;
 
 class VectorAnimatorBuilder final : public AnimatorBuilder {
 public:
diff --git a/modules/skottie/src/effects/BlackAndWhiteEffect.cpp b/modules/skottie/src/effects/BlackAndWhiteEffect.cpp
index 3ff364e..d7a00c7 100644
--- a/modules/skottie/src/effects/BlackAndWhiteEffect.cpp
+++ b/modules/skottie/src/effects/BlackAndWhiteEffect.cpp
@@ -5,14 +5,24 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkData.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkString.h"
 #include "include/effects/SkRuntimeEffect.h"
-#include "include/private/base/SkTPin.h"
+#include "include/private/base/SkAssert.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/BrightnessContrastEffect.cpp b/modules/skottie/src/effects/BrightnessContrastEffect.cpp
index 41fc2c7..571caea 100644
--- a/modules/skottie/src/effects/BrightnessContrastEffect.cpp
+++ b/modules/skottie/src/effects/BrightnessContrastEffect.cpp
@@ -5,17 +5,29 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
 #include "include/core/SkColorFilter.h"
+#include "include/core/SkData.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkString.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "include/private/base/SkAssert.h"
 #include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 
+#include <algorithm>
 #include <cmath>
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/BulgeEffect.cpp b/modules/skottie/src/effects/BulgeEffect.cpp
index 6b2ee0b..2652254 100644
--- a/modules/skottie/src/effects/BulgeEffect.cpp
+++ b/modules/skottie/src/effects/BulgeEffect.cpp
@@ -5,18 +5,40 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
 #include "include/core/SkPicture.h"
 #include "include/core/SkPictureRecorder.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSamplingOptions.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
 #include "include/core/SkTileMode.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "include/private/base/SkAssert.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
-#include "modules/sksg/include/SkSGPaint.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
-#include "src/utils/SkJSON.h"
+
+#include <cmath>
+#include <cstddef>
+#include <utility>
+#include <vector>
+
+namespace skjson {
+class ArrayValue;
+}
+namespace sksg {
+class InvalidationController;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/CCTonerEffect.cpp b/modules/skottie/src/effects/CCTonerEffect.cpp
index a0945be..e71c241 100644
--- a/modules/skottie/src/effects/CCTonerEffect.cpp
+++ b/modules/skottie/src/effects/CCTonerEffect.cpp
@@ -5,16 +5,26 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
-#include "include/private/SkColorData.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
 #include "modules/sksg/include/SkSGPaint.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "src/base/SkVx.h"
 #include "src/core/SkSwizzlePriv.h"
-#include "src/utils/SkJSON.h"
+
+#include <cstddef>
+#include <utility>
+#include <vector>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/effects/CornerPinEffect.cpp b/modules/skottie/src/effects/CornerPinEffect.cpp
index 0719e45..3f21ba9 100644
--- a/modules/skottie/src/effects/CornerPinEffect.cpp
+++ b/modules/skottie/src/effects/CornerPinEffect.cpp
@@ -5,12 +5,25 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
-#include "modules/skottie/src/SkottieJson.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSize.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "modules/sksg/include/SkSGTransform.h"
 
+#include <array>
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
+
 namespace skottie::internal {
 
 namespace  {
diff --git a/modules/skottie/src/effects/DirectionalBlur.cpp b/modules/skottie/src/effects/DirectionalBlur.cpp
index 6cfc5b9..71a0943 100644
--- a/modules/skottie/src/effects/DirectionalBlur.cpp
+++ b/modules/skottie/src/effects/DirectionalBlur.cpp
@@ -5,13 +5,24 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkImageFilter.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSamplingOptions.h"
+#include "include/effects/SkImageFilters.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
-#include "modules/sksg/include/SkSGPaint.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/effects/DisplacementMapEffect.cpp b/modules/skottie/src/effects/DisplacementMapEffect.cpp
index c9a6701..3460691 100644
--- a/modules/skottie/src/effects/DisplacementMapEffect.cpp
+++ b/modules/skottie/src/effects/DisplacementMapEffect.cpp
@@ -5,22 +5,45 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
 #include "include/core/SkCanvas.h"
+#include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPicture.h"
 #include "include/core/SkPictureRecorder.h"
-#include "include/effects/SkColorMatrix.h"
-#include "include/effects/SkImageFilters.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSamplingOptions.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
+#include "include/core/SkTileMode.h"
 #include "include/effects/SkRuntimeEffect.h"
 #include "include/private/SkColorData.h"
+#include "include/private/base/SkAssert.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/Layer.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
-#include "modules/sksg/include/SkSGRenderEffect.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
+#include "src/utils/SkJSON.h"
 
+#include <algorithm>
 #include <cmath>
+#include <cstdio>
 #include <tuple>
+#include <utility>
+#include <vector>
+
+struct SkPoint;
+
+namespace sksg {
+class InvalidationController;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/DropShadowEffect.cpp b/modules/skottie/src/effects/DropShadowEffect.cpp
index f254763..f189d6a 100644
--- a/modules/skottie/src/effects/DropShadowEffect.cpp
+++ b/modules/skottie/src/effects/DropShadowEffect.cpp
@@ -5,12 +5,25 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColor.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/Effects.cpp b/modules/skottie/src/effects/Effects.cpp
index 434e151..19a86fe 100644
--- a/modules/skottie/src/effects/Effects.cpp
+++ b/modules/skottie/src/effects/Effects.cpp
@@ -7,14 +7,19 @@
 
 #include "modules/skottie/src/effects/Effects.h"
 
-#include "modules/skottie/src/Composition.h"
-#include "modules/skottie/src/Layer.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SkottieProperty.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 
 #include <algorithm>
+#include <cstdint>
+#include <cstring>
 #include <iterator>
+#include <limits>
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/Effects.h b/modules/skottie/src/effects/Effects.h
index 39ed57e..8dc34c4 100644
--- a/modules/skottie/src/effects/Effects.h
+++ b/modules/skottie/src/effects/Effects.h
@@ -8,18 +8,25 @@
 #ifndef SkottieEffects_DEFINED
 #define SkottieEffects_DEFINED
 
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/private/base/SkNoncopyable.h"
 #include "modules/skottie/src/Composition.h"
-#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/animator/Animator.h"
+#include "modules/sksg/include/SkSGRenderEffect.h"
+#include "src/utils/SkJSON.h"  // IWYU pragma: keep
 
-class SkMaskFilter;
+#include <cstddef>
 
 namespace sksg {
-class MaskShaderEffect;
+class RenderNode;
 } // namespace sksg
 
 namespace skottie {
 namespace internal {
+class AnimationBuilder;
+class LayerBuilder;
 
 class EffectBuilder final : public SkNoncopyable {
 public:
diff --git a/modules/skottie/src/effects/FillEffect.cpp b/modules/skottie/src/effects/FillEffect.cpp
index 63de32f..cbdf133 100644
--- a/modules/skottie/src/effects/FillEffect.cpp
+++ b/modules/skottie/src/effects/FillEffect.cpp
@@ -5,14 +5,24 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkRefCnt.h"
 #include "include/private/base/SkTPin.h"
-#include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
 #include "modules/sksg/include/SkSGPaint.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/FractalNoiseEffect.cpp b/modules/skottie/src/effects/FractalNoiseEffect.cpp
index 007fcfa..770a3aa 100644
--- a/modules/skottie/src/effects/FractalNoiseEffect.cpp
+++ b/modules/skottie/src/effects/FractalNoiseEffect.cpp
@@ -5,17 +5,45 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkString.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkFloatingPoint.h"
+#include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 #include "src/base/SkRandom.h"
 
+#include <algorithm>
+#include <array>
 #include <cmath>
+#include <cstddef>
+#include <cstdint>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+struct SkPoint;
+
+namespace skjson {
+class ArrayValue;
+}
+namespace sksg {
+class InvalidationController;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/GaussianBlurEffect.cpp b/modules/skottie/src/effects/GaussianBlurEffect.cpp
index 8b8ea5a..c728467 100644
--- a/modules/skottie/src/effects/GaussianBlurEffect.cpp
+++ b/modules/skottie/src/effects/GaussianBlurEffect.cpp
@@ -5,13 +5,24 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkTileMode.h"
+#include "include/private/base/SkTPin.h"
+#include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGRenderEffect.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 
-#include "include/private/base/SkTPin.h"
-#include "modules/skottie/src/SkottieValue.h"
-#include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include <array>
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/GlowStyles.cpp b/modules/skottie/src/effects/GlowStyles.cpp
index 81cd893..72c1b24 100644
--- a/modules/skottie/src/effects/GlowStyles.cpp
+++ b/modules/skottie/src/effects/GlowStyles.cpp
@@ -5,18 +5,27 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
+#include "include/core/SkColor.h"
 #include "include/core/SkColorFilter.h"
+#include "include/core/SkImageFilter.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/effects/SkColorMatrix.h"
 #include "include/effects/SkImageFilters.h"
+#include "include/private/base/SkFloatingPoint.h"
 #include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+#include "src/utils/SkJSON.h"
 
+#include <algorithm>
 #include <cmath>
+#include <utility>
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/effects/GradientEffect.cpp b/modules/skottie/src/effects/GradientEffect.cpp
index ee002c2..6d9f482 100644
--- a/modules/skottie/src/effects/GradientEffect.cpp
+++ b/modules/skottie/src/effects/GradientEffect.cpp
@@ -5,12 +5,24 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGGradient.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/HueSaturationEffect.cpp b/modules/skottie/src/effects/HueSaturationEffect.cpp
index 1bfd639..932fd11 100644
--- a/modules/skottie/src/effects/HueSaturationEffect.cpp
+++ b/modules/skottie/src/effects/HueSaturationEffect.cpp
@@ -5,14 +5,29 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkData.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkString.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "include/private/base/SkAssert.h"
 #include "include/private/base/SkTPin.h"
-#include "modules/skottie/src/SkottieJson.h"
-#include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <algorithm>
+#include <cmath>
+#include <cstddef>
+#include <cstdint>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/InvertEffect.cpp b/modules/skottie/src/effects/InvertEffect.cpp
index 526913f..41d0906 100644
--- a/modules/skottie/src/effects/InvertEffect.cpp
+++ b/modules/skottie/src/effects/InvertEffect.cpp
@@ -5,12 +5,24 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkRefCnt.h"
 #include "include/effects/SkColorMatrix.h"
-#include "modules/skottie/src/SkottieValue.h"
+#include "include/private/base/SkAssert.h"
+#include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <array>
+#include <cstddef>
+#include <cstdint>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/LevelsEffect.cpp b/modules/skottie/src/effects/LevelsEffect.cpp
index a1fcf1c..57f3d90 100644
--- a/modules/skottie/src/effects/LevelsEffect.cpp
+++ b/modules/skottie/src/effects/LevelsEffect.cpp
@@ -5,16 +5,29 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkFloatingPoint.h"
 #include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 
+#include <algorithm>
 #include <array>
 #include <cmath>
+#include <cstddef>
+#include <cstdint>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/LinearWipeEffect.cpp b/modules/skottie/src/effects/LinearWipeEffect.cpp
index e82f6ae..55fe59b 100644
--- a/modules/skottie/src/effects/LinearWipeEffect.cpp
+++ b/modules/skottie/src/effects/LinearWipeEffect.cpp
@@ -5,18 +5,29 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColor.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkTileMode.h"
 #include "include/effects/SkGradientShader.h"
-#include "include/effects/SkShaderMaskFilter.h"
 #include "include/private/base/SkTPin.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
-#include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 
+#include <algorithm>
 #include <cmath>
+#include <cstddef>
 #include <utility>
 
+namespace skjson {
+class ArrayValue;
+}
+
 namespace skottie {
 namespace internal {
 
diff --git a/modules/skottie/src/effects/MotionTileEffect.cpp b/modules/skottie/src/effects/MotionTileEffect.cpp
index 29534c2..514cc13 100644
--- a/modules/skottie/src/effects/MotionTileEffect.cpp
+++ b/modules/skottie/src/effects/MotionTileEffect.cpp
@@ -5,20 +5,44 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
 #include "include/core/SkPicture.h"
 #include "include/core/SkPictureRecorder.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSamplingOptions.h"
+#include "include/core/SkScalar.h"
 #include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkTileMode.h"
 #include "include/effects/SkGradientShader.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
-#include "src/utils/SkJSON.h"
 
+#include <algorithm>
 #include <cmath>
+#include <cstddef>
+#include <utility>
+#include <vector>
+
+namespace skjson {
+class ArrayValue;
+}
+namespace sksg {
+class InvalidationController;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/RadialWipeEffect.cpp b/modules/skottie/src/effects/RadialWipeEffect.cpp
index 5002571..7007632 100644
--- a/modules/skottie/src/effects/RadialWipeEffect.cpp
+++ b/modules/skottie/src/effects/RadialWipeEffect.cpp
@@ -5,16 +5,37 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
 #include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkTileMode.h"
 #include "include/effects/SkGradientShader.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
-#include "src/utils/SkJSON.h"
 
+#include <algorithm>
 #include <cmath>
+#include <cstddef>
+#include <utility>
+#include <vector>
+
+class SkMatrix;
+
+namespace skjson {
+class ArrayValue;
+}
+namespace sksg {
+class InvalidationController;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/ShadowStyles.cpp b/modules/skottie/src/effects/ShadowStyles.cpp
index 0dc6063..14dc2e2 100644
--- a/modules/skottie/src/effects/ShadowStyles.cpp
+++ b/modules/skottie/src/effects/ShadowStyles.cpp
@@ -5,17 +5,26 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
+#include "include/core/SkColor.h"
 #include "include/core/SkColorFilter.h"
+#include "include/core/SkImageFilter.h"
+#include "include/core/SkM44.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/effects/SkColorMatrix.h"
 #include "include/effects/SkImageFilters.h"
 #include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "src/utils/SkJSON.h"
 
+#include <utility>
+
 namespace skottie::internal {
 
 namespace {
diff --git a/modules/skottie/src/effects/SharpenEffect.cpp b/modules/skottie/src/effects/SharpenEffect.cpp
index 00cc120..d08ce50 100644
--- a/modules/skottie/src/effects/SharpenEffect.cpp
+++ b/modules/skottie/src/effects/SharpenEffect.cpp
@@ -5,13 +5,26 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkImageFilter.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkTileMode.h"
+#include "include/effects/SkImageFilters.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
-#include "modules/sksg/include/SkSGPaint.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/effects/ShiftChannelsEffect.cpp b/modules/skottie/src/effects/ShiftChannelsEffect.cpp
index 8e9ed47..70be2c2 100644
--- a/modules/skottie/src/effects/ShiftChannelsEffect.cpp
+++ b/modules/skottie/src/effects/ShiftChannelsEffect.cpp
@@ -5,13 +5,25 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkRefCnt.h"
 #include "include/private/SkColorData.h"
 #include "include/private/base/SkTPin.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <array>
+#include <cstddef>
+#include <cstdint>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/SkSLEffect.cpp b/modules/skottie/src/effects/SkSLEffect.cpp
index e5ca1d9..d650fc1 100644
--- a/modules/skottie/src/effects/SkSLEffect.cpp
+++ b/modules/skottie/src/effects/SkSLEffect.cpp
@@ -5,15 +5,42 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkData.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkString.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkDebug.h"
 #include "include/private/base/SkMalloc.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
+#include "modules/sksg/include/SkSGNode.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+#include "src/utils/SkJSON.h"
+
+#include <cstdint>
+#include <cstring>
+#include <memory>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+class SkMatrix;
+struct SkPoint;
+
+namespace sksg {
+class InvalidationController;
+}
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/effects/SphereEffect.cpp b/modules/skottie/src/effects/SphereEffect.cpp
index c3e6394..acda468 100644
--- a/modules/skottie/src/effects/SphereEffect.cpp
+++ b/modules/skottie/src/effects/SphereEffect.cpp
@@ -5,20 +5,45 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkBlendMode.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
 #include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
 #include "include/core/SkPicture.h"
 #include "include/core/SkPictureRecorder.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSamplingOptions.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
 #include "include/core/SkTileMode.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
+#include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 
 #include <array>
+#include <cmath>
+#include <cstdio>
+#include <utility>
+#include <vector>
+
+namespace skjson {
+class ArrayValue;
+}
+namespace sksg {
+class InvalidationController;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/ThresholdEffect.cpp b/modules/skottie/src/effects/ThresholdEffect.cpp
index 9e95a00..6c6447b 100644
--- a/modules/skottie/src/effects/ThresholdEffect.cpp
+++ b/modules/skottie/src/effects/ThresholdEffect.cpp
@@ -5,13 +5,24 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkData.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkString.h"
 #include "include/effects/SkRuntimeEffect.h"
+#include "include/private/base/SkAssert.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie::internal {
 namespace {
diff --git a/modules/skottie/src/effects/TintEffect.cpp b/modules/skottie/src/effects/TintEffect.cpp
index cedd024..062f1c1 100644
--- a/modules/skottie/src/effects/TintEffect.cpp
+++ b/modules/skottie/src/effects/TintEffect.cpp
@@ -5,12 +5,22 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColor.h"
+#include "include/core/SkRefCnt.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
 #include "modules/sksg/include/SkSGPaint.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/effects/TransformEffect.cpp b/modules/skottie/src/effects/TransformEffect.cpp
index 485b1f5..ed0d7fa 100644
--- a/modules/skottie/src/effects/TransformEffect.cpp
+++ b/modules/skottie/src/effects/TransformEffect.cpp
@@ -5,13 +5,27 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
-#include "modules/skottie/src/SkottieJson.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "modules/skottie/src/Adapter.h"
+#include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/Transform.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGOpacityEffect.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "modules/sksg/include/SkSGTransform.h"
 
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+class ObjectValue;
+}  // namespace skjson
+
 namespace skottie {
 namespace internal {
 
diff --git a/modules/skottie/src/effects/TritoneEffect.cpp b/modules/skottie/src/effects/TritoneEffect.cpp
index de05ed8..adec109 100644
--- a/modules/skottie/src/effects/TritoneEffect.cpp
+++ b/modules/skottie/src/effects/TritoneEffect.cpp
@@ -5,18 +5,27 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
-#include "modules/skottie/src/Adapter.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkRefCnt.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skottie/src/effects/Effects.h"
 #include "modules/sksg/include/SkSGColorFilter.h"
 #include "modules/sksg/include/SkSGPaint.h"
-#include "src/utils/SkJSON.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
 
-namespace  {
+namespace {
 
 class TritoneAdapter final : public AnimatablePropertyContainer {
 public:
@@ -71,7 +80,7 @@
     ScalarValue fWeight = 0;
 };
 
-} // namespace
+}  // namespace
 
 sk_sp<sksg::RenderNode> EffectBuilder::attachTritoneEffect(const skjson::ArrayValue& jprops,
                                                            sk_sp<sksg::RenderNode> layer) const {
diff --git a/modules/skottie/src/effects/VenetianBlindsEffect.cpp b/modules/skottie/src/effects/VenetianBlindsEffect.cpp
index 6e0269f..17433f0 100644
--- a/modules/skottie/src/effects/VenetianBlindsEffect.cpp
+++ b/modules/skottie/src/effects/VenetianBlindsEffect.cpp
@@ -5,15 +5,30 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/effects/Effects.h"
-
+#include "include/core/SkColor.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkTileMode.h"
 #include "include/effects/SkGradientShader.h"
-#include "include/effects/SkShaderMaskFilter.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkFloatingPoint.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
-#include "modules/sksg/include/SkSGRenderEffect.h"
-#include "src/utils/SkJSON.h"
+#include "modules/skottie/src/effects/Effects.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 
+#include <algorithm>
+#include <array>
 #include <cmath>
+#include <cstddef>
+#include <utility>
+
+namespace skjson {
+class ArrayValue;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/AudioLayer.cpp b/modules/skottie/src/layers/AudioLayer.cpp
index 253f12b..d0ee2c6 100644
--- a/modules/skottie/src/layers/AudioLayer.cpp
+++ b/modules/skottie/src/layers/AudioLayer.cpp
@@ -5,12 +5,15 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkRefCnt.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/SkottiePriv.h"
-
-#include "modules/skottie/src/SkottieJson.h"
-#include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
+#include "modules/skresources/include/SkResources.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/layers/FootageLayer.cpp b/modules/skottie/src/layers/FootageLayer.cpp
index f9fb30f..4c48e48 100644
--- a/modules/skottie/src/layers/FootageLayer.cpp
+++ b/modules/skottie/src/layers/FootageLayer.cpp
@@ -5,13 +5,27 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/include/Skottie.h"
-#include "modules/skottie/src/SkottiePriv.h"
-
 #include "include/core/SkImage.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSamplingOptions.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
+#include "include/private/base/SkAssert.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SlotManager.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/animator/Animator.h"
+#include "modules/skresources/include/SkResources.h"
 #include "modules/sksg/include/SkSGImage.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "modules/sksg/include/SkSGTransform.h"
+#include "src/core/SkTHash.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/NullLayer.cpp b/modules/skottie/src/layers/NullLayer.cpp
index cb93ce6..7415d4c 100644
--- a/modules/skottie/src/layers/NullLayer.cpp
+++ b/modules/skottie/src/layers/NullLayer.cpp
@@ -5,10 +5,14 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/SkottiePriv.h"
-
 #include "modules/sksg/include/SkSGRenderNode.h"
 
+namespace skjson {
+class ObjectValue;
+}
+
 namespace skottie {
 namespace internal {
 
diff --git a/modules/skottie/src/layers/PrecompLayer.cpp b/modules/skottie/src/layers/PrecompLayer.cpp
index c8c0877..0436ebe 100644
--- a/modules/skottie/src/layers/PrecompLayer.cpp
+++ b/modules/skottie/src/layers/PrecompLayer.cpp
@@ -5,18 +5,34 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/SkottiePriv.h"
-
 #include "include/core/SkCanvas.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSize.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkFloatingPoint.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "modules/skottie/include/ExternalLayer.h"
+#include "modules/skottie/include/SkottieProperty.h"
 #include "modules/skottie/src/Composition.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 #include "src/base/SkTLazy.h"
 #include "src/utils/SkJSON.h"
 
+#include <utility>
+
+class SkMatrix;
+
+namespace sksg {
+class InvalidationController;
+}
+
 namespace skottie {
 namespace internal {
 
diff --git a/modules/skottie/src/layers/SolidLayer.cpp b/modules/skottie/src/layers/SolidLayer.cpp
index c931016..a09d3a6 100644
--- a/modules/skottie/src/layers/SolidLayer.cpp
+++ b/modules/skottie/src/layers/SolidLayer.cpp
@@ -5,14 +5,23 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/SkottiePriv.h"
-
+#include "include/core/SkColor.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSize.h"
 #include "include/utils/SkParse.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/sksg/include/SkSGDraw.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
 #include "modules/sksg/include/SkSGPaint.h"
 #include "modules/sksg/include/SkSGRect.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
+#include "src/utils/SkJSON.h"
+
+#include <cstdint>
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/TextLayer.cpp b/modules/skottie/src/layers/TextLayer.cpp
index 2a4e9a8..bcfbd9a 100644
--- a/modules/skottie/src/layers/TextLayer.cpp
+++ b/modules/skottie/src/layers/TextLayer.cpp
@@ -5,23 +5,29 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/SkottiePriv.h"
-
-#include "include/core/SkData.h"
 #include "include/core/SkFontMgr.h"
+#include "include/core/SkFontStyle.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkString.h"
+#include "include/core/SkTypeface.h"
 #include "include/core/SkTypes.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/SkottieJson.h"
+#include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/text/Font.h"
 #include "modules/skottie/src/text/TextAdapter.h"
-#include "modules/skottie/src/text/TextAnimator.h"
-#include "modules/skottie/src/text/TextValue.h"
-#include "modules/sksg/include/SkSGDraw.h"
-#include "modules/sksg/include/SkSGGroup.h"
-#include "modules/sksg/include/SkSGPaint.h"
-#include "modules/sksg/include/SkSGPath.h"
-#include "modules/sksg/include/SkSGText.h"
+#include "modules/skresources/include/SkResources.h"
+#include "modules/sksg/include/SkSGGroup.h"  // IWYU pragma: keep
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "src/base/SkTSearch.h"
+#include "src/core/SkTHash.h"
+#include "src/utils/SkJSON.h"
 
 #include <string.h>
+#include <memory>
+#include <tuple>
+#include <utility>
+#include <vector>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/shapelayer/Ellipse.cpp b/modules/skottie/src/layers/shapelayer/Ellipse.cpp
index 0b7faeb..70fe213 100644
--- a/modules/skottie/src/layers/shapelayer/Ellipse.cpp
+++ b/modules/skottie/src/layers/shapelayer/Ellipse.cpp
@@ -5,13 +5,21 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkPathTypes.h"
 #include "include/core/SkRRect.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGRect.h"
+#include "src/utils/SkJSON.h"
+
+namespace sksg {
+class GeometryNode;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/shapelayer/FillStroke.cpp b/modules/skottie/src/layers/shapelayer/FillStroke.cpp
index e6bc25d..e53d342 100644
--- a/modules/skottie/src/layers/shapelayer/FillStroke.cpp
+++ b/modules/skottie/src/layers/shapelayer/FillStroke.cpp
@@ -5,13 +5,26 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkColor.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkAssert.h"
 #include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGGeometryEffect.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
 #include "modules/sksg/include/SkSGPaint.h"
+#include "src/utils/SkJSON.h"
+
+#include <algorithm>
+#include <cstddef>
+#include <utility>
+#include <vector>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/shapelayer/Gradient.cpp b/modules/skottie/src/layers/shapelayer/Gradient.cpp
index f83a138..4254cbc 100644
--- a/modules/skottie/src/layers/shapelayer/Gradient.cpp
+++ b/modules/skottie/src/layers/shapelayer/Gradient.cpp
@@ -5,17 +5,31 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkColor.h"
+#include "include/core/SkRefCnt.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkDebug.h"
+#include "include/private/base/SkFloatingPoint.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "include/private/base/SkTPin.h"
-#include "modules/skottie/src/Adapter.h"
+#include "include/private/base/SkTo.h"
 #include "modules/skottie/src/SkottieJson.h"
-#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGGradient.h"
 #include "modules/sksg/include/SkSGPaint.h"
+#include "modules/sksg/include/SkSGRenderEffect.h"
+#include "src/utils/SkJSON.h"
+
+#include <algorithm>
+#include <cstddef>
+#include <utility>
+#include <vector>
 
 namespace skottie {
 namespace internal {
+class AnimationBuilder;
 
 namespace  {
 
diff --git a/modules/skottie/src/layers/shapelayer/MergePaths.cpp b/modules/skottie/src/layers/shapelayer/MergePaths.cpp
index b2bcd9c..464a36c 100644
--- a/modules/skottie/src/layers/shapelayer/MergePaths.cpp
+++ b/modules/skottie/src/layers/shapelayer/MergePaths.cpp
@@ -5,14 +5,21 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/Adapter.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/SkottieJson.h"
-#include "modules/skottie/src/SkottiePriv.h"
-#include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGMerge.h"
+#include "src/utils/SkJSON.h"
+
+#include <algorithm>
+#include <cstddef>
+#include <utility>
+#include <vector>
 
 namespace skottie {
 namespace internal {
+class AnimationBuilder;
 
 sk_sp<sksg::Merge> ShapeBuilder::MergeGeometry(std::vector<sk_sp<sksg::GeometryNode>>&& geos,
                                                sksg::Merge::Mode mode) {
diff --git a/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp b/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp
index 9e5e49a..6c0059f 100644
--- a/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp
+++ b/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp
@@ -5,6 +5,8 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkPaint.h"
+#include "include/core/SkRefCnt.h"
 #include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/SkottieJson.h"
@@ -12,6 +14,11 @@
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGGeometryEffect.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
+#include <vector>
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/layers/shapelayer/Polystar.cpp b/modules/skottie/src/layers/shapelayer/Polystar.cpp
index dd31e0e..96a7a08 100644
--- a/modules/skottie/src/layers/shapelayer/Polystar.cpp
+++ b/modules/skottie/src/layers/shapelayer/Polystar.cpp
@@ -5,14 +5,30 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkM44.h"
 #include "include/core/SkPathBuilder.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkFloatingPoint.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGPath.h"
+#include "src/utils/SkJSON.h"
+
+#include <array>
+#include <cmath>
+#include <cstddef>
+
+namespace sksg {
+class GeometryNode;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/shapelayer/PuckerBloat.cpp b/modules/skottie/src/layers/shapelayer/PuckerBloat.cpp
index 3691a03..7b15550 100644
--- a/modules/skottie/src/layers/shapelayer/PuckerBloat.cpp
+++ b/modules/skottie/src/layers/shapelayer/PuckerBloat.cpp
@@ -5,15 +5,23 @@
  * found in the LICENSE file.
  */
 
-#include "include/core/SkM44.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGGeometryEffect.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "src/core/SkGeometry.h"
+#include "src/utils/SkJSON.h"
 
+#include <utility>
 #include <vector>
 
 namespace skottie::internal {
diff --git a/modules/skottie/src/layers/shapelayer/Rectangle.cpp b/modules/skottie/src/layers/shapelayer/Rectangle.cpp
index 3a5c328..0c6cb2c 100644
--- a/modules/skottie/src/layers/shapelayer/Rectangle.cpp
+++ b/modules/skottie/src/layers/shapelayer/Rectangle.cpp
@@ -5,13 +5,21 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkPathTypes.h"
 #include "include/core/SkRRect.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGRect.h"
+#include "src/utils/SkJSON.h"
+
+namespace sksg {
+class GeometryNode;
+}
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/shapelayer/Repeater.cpp b/modules/skottie/src/layers/shapelayer/Repeater.cpp
index 5536632..4c7b0e7 100644
--- a/modules/skottie/src/layers/shapelayer/Repeater.cpp
+++ b/modules/skottie/src/layers/shapelayer/Repeater.cpp
@@ -6,16 +6,33 @@
  */
 
 #include "include/core/SkCanvas.h"
+#include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/private/base/SkTPin.h"
 #include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
+#include "src/utils/SkJSON.h"
 
+#include <algorithm>
+#include <cmath>
+#include <cstddef>
+#include <utility>
 #include <vector>
 
+struct SkPoint;
+
+namespace sksg {
+class InvalidationController;
+}
+
 namespace skottie {
 namespace internal {
 
diff --git a/modules/skottie/src/layers/shapelayer/RoundCorners.cpp b/modules/skottie/src/layers/shapelayer/RoundCorners.cpp
index cf5f1b6..7ecf1a5 100644
--- a/modules/skottie/src/layers/shapelayer/RoundCorners.cpp
+++ b/modules/skottie/src/layers/shapelayer/RoundCorners.cpp
@@ -5,12 +5,17 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkRefCnt.h"
 #include "modules/skottie/src/Adapter.h"
-#include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGGeometryEffect.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "src/utils/SkJSON.h"
+
+#include <utility>
+#include <vector>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp b/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp
index f1584f5..cf324597 100644
--- a/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp
+++ b/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp
@@ -7,23 +7,30 @@
 
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 
-#include "include/core/SkPath.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkDebug.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SkottieProperty.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
-#include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/animator/Animator.h"
 #include "modules/sksg/include/SkSGDraw.h"
 #include "modules/sksg/include/SkSGGeometryEffect.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
 #include "modules/sksg/include/SkSGGroup.h"
 #include "modules/sksg/include/SkSGMerge.h"
 #include "modules/sksg/include/SkSGPaint.h"
-#include "modules/sksg/include/SkSGPath.h"
-#include "modules/sksg/include/SkSGRect.h"
-#include "modules/sksg/include/SkSGRenderEffect.h"
+#include "modules/sksg/include/SkSGPath.h"  // IWYU pragma: keep
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "modules/sksg/include/SkSGTransform.h"
 #include "src/utils/SkJSON.h"
 
+#include <string.h>
 #include <algorithm>
+#include <cstdint>
+#include <cstdlib>
 #include <iterator>
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/layers/shapelayer/ShapeLayer.h b/modules/skottie/src/layers/shapelayer/ShapeLayer.h
index 790318a..93b62b0 100644
--- a/modules/skottie/src/layers/shapelayer/ShapeLayer.h
+++ b/modules/skottie/src/layers/shapelayer/ShapeLayer.h
@@ -8,8 +8,8 @@
 #ifndef SkottieShapeLayer_DEFINED
 #define SkottieShapeLayer_DEFINED
 
+#include "include/core/SkRefCnt.h"
 #include "include/private/base/SkNoncopyable.h"
-#include "modules/skottie/src/animator/Animator.h"
 #include "modules/sksg/include/SkSGMerge.h"
 
 #include <vector>
@@ -30,7 +30,7 @@
 
 namespace skottie {
 namespace internal {
-
+class AnimatablePropertyContainer;
 class AnimationBuilder;
 
 // TODO/TRANSITIONAL: not much state here yet, but will eventually hold ShapeLayer-related stuff.
diff --git a/modules/skottie/src/layers/shapelayer/TrimPaths.cpp b/modules/skottie/src/layers/shapelayer/TrimPaths.cpp
index cdf814b..a65fff7 100644
--- a/modules/skottie/src/layers/shapelayer/TrimPaths.cpp
+++ b/modules/skottie/src/layers/shapelayer/TrimPaths.cpp
@@ -5,14 +5,22 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/effects/SkTrimPathEffect.h"
 #include "modules/skottie/src/Adapter.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
 #include "modules/sksg/include/SkSGGeometryEffect.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
 #include "modules/sksg/include/SkSGMerge.h"
+#include "src/utils/SkJSON.h"
 
+#include <algorithm>
+#include <cstddef>
+#include <utility>
 #include <vector>
 
 namespace skottie {
diff --git a/modules/skottie/src/text/Font.cpp b/modules/skottie/src/text/Font.cpp
index f958105..b2aae86 100644
--- a/modules/skottie/src/text/Font.cpp
+++ b/modules/skottie/src/text/Font.cpp
@@ -7,11 +7,19 @@
 
 #include "modules/skottie/src/text/Font.h"
 
+#include "include/core/SkMatrix.h"
 #include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkTypeface.h"
+#include "include/private/base/SkTFitsIn.h"
+#include "include/private/base/SkTo.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/sksg/include/SkSGPath.h"
 #include "modules/sksg/include/SkSGTransform.h"
+#include "src/base/SkUTF.h"
+#include "src/utils/SkJSON.h"
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/src/text/Font.h b/modules/skottie/src/text/Font.h
index 374daaab9..f9b7b7c 100644
--- a/modules/skottie/src/text/Font.h
+++ b/modules/skottie/src/text/Font.h
@@ -8,16 +8,20 @@
 #ifndef SkottieFont_DEFINED
 #define SkottieFont_DEFINED
 
-#include "include/core/SkTypeface.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkTypes.h"
 #include "include/private/base/SkNoncopyable.h"
 #include "include/utils/SkCustomTypeface.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 #include "src/core/SkTHash.h"
 
 #include <memory>
+#include <utility>
 #include <vector>
 
 class SkPath;
+class SkTypeface;
+struct SkSize;
 
 namespace skjson { class ObjectValue; }
 
diff --git a/modules/skottie/src/text/RangeSelector.cpp b/modules/skottie/src/text/RangeSelector.cpp
index 2128035..62fd1c8 100644
--- a/modules/skottie/src/text/RangeSelector.cpp
+++ b/modules/skottie/src/text/RangeSelector.cpp
@@ -4,17 +4,23 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-
 #include "modules/skottie/src/text/RangeSelector.h"
 
 #include "include/core/SkCubicMap.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkFloatingPoint.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
+#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/src/SkottieJson.h"
-#include "modules/skottie/src/SkottieValue.h"
+#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/animator/Animator.h"
+#include "src/utils/SkJSON.h"
 
 #include <algorithm>
-#include <cmath>
+#include <limits>
+#include <vector>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/text/RangeSelector.h b/modules/skottie/src/text/RangeSelector.h
index a2ef6ae..fe803e2 100644
--- a/modules/skottie/src/text/RangeSelector.h
+++ b/modules/skottie/src/text/RangeSelector.h
@@ -9,14 +9,19 @@
 #define SkottieRangeSelector_DEFINED
 
 #include "include/core/SkRefCnt.h"
-#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/text/TextAnimator.h"
 
+#include <cstddef>
+#include <cstdint>
 #include <tuple>
-#include <vector>
+namespace skjson {
+class ObjectValue;
+}
 
 namespace skottie {
 namespace internal {
+class AnimatablePropertyContainer;
+class AnimationBuilder;
 
 class RangeSelector final : public SkNVRefCnt<RangeSelector> {
 public:
diff --git a/modules/skottie/src/text/TextAdapter.cpp b/modules/skottie/src/text/TextAdapter.cpp
index 64ee2d2..e35ca9f 100644
--- a/modules/skottie/src/text/TextAdapter.cpp
+++ b/modules/skottie/src/text/TextAdapter.cpp
@@ -4,16 +4,30 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-
 #include "modules/skottie/src/text/TextAdapter.h"
 
 #include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
 #include "include/core/SkContourMeasure.h"
+#include "include/core/SkFont.h"
 #include "include/core/SkFontMgr.h"
 #include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSpan.h"
+#include "include/core/SkString.h"
+#include "include/core/SkTypes.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
+#include "include/utils/SkTextUtils.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/SkottieProperty.h"
 #include "modules/skottie/src/SkottieJson.h"
-#include "modules/skottie/src/text/RangeSelector.h"
+#include "modules/skottie/src/SkottiePriv.h"
+#include "modules/skottie/src/text/RangeSelector.h"  // IWYU pragma: keep
 #include "modules/skottie/src/text/TextAnimator.h"
 #include "modules/sksg/include/SkSGDraw.h"
 #include "modules/sksg/include/SkSGGeometryNode.h"
@@ -25,6 +39,18 @@
 #include "modules/sksg/include/SkSGRenderNode.h"
 #include "modules/sksg/include/SkSGTransform.h"
 #include "modules/sksg/src/SkSGTransformPriv.h"
+#include "src/utils/SkJSON.h"
+
+#include <algorithm>
+#include <cmath>
+#include <cstddef>
+#include <limits>
+#include <tuple>
+#include <utility>
+
+namespace sksg {
+class InvalidationController;
+}
 
 // Enable for text layout debugging.
 #define SHOW_LAYOUT_BOXES 0
diff --git a/modules/skottie/src/text/TextAdapter.h b/modules/skottie/src/text/TextAdapter.h
index 66b54fb..b1a8ba5 100644
--- a/modules/skottie/src/text/TextAdapter.h
+++ b/modules/skottie/src/text/TextAdapter.h
@@ -8,25 +8,39 @@
 #ifndef SkottieTextAdapter_DEFINED
 #define SkottieTextAdapter_DEFINED
 
+#include "include/core/SkM44.h"
+#include "include/core/SkRefCnt.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "modules/skottie/include/TextShaper.h"
+#include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/text/Font.h"
 #include "modules/skottie/src/text/TextAnimator.h"
 #include "modules/skottie/src/text/TextValue.h"
+#include "modules/sksg/include/SkSGPaint.h"
+#include "modules/sksg/include/SkSGRenderEffect.h"
+#include "modules/sksg/include/SkSGTransform.h"
 
+#include <cstdint>
+#include <memory>
 #include <vector>
 
 class SkFontMgr;
 
+namespace skjson {
+class ObjectValue;
+}
+namespace skottie {
+class Logger;
+}
 namespace sksg {
-class BlurImageFilter;
 class Group;
-template <typename T>
-class Matrix;
-} // namespace sksg
+class RenderNode;
+}  // namespace sksg
 
 namespace skottie {
 namespace internal {
+class AnimationBuilder;
 
 class TextAdapter final : public AnimatablePropertyContainer {
 public:
diff --git a/modules/skottie/src/text/TextAnimator.cpp b/modules/skottie/src/text/TextAnimator.cpp
index 57185d5..5aeb16d 100644
--- a/modules/skottie/src/text/TextAnimator.cpp
+++ b/modules/skottie/src/text/TextAnimator.cpp
@@ -8,8 +8,7 @@
 #include "modules/skottie/src/text/TextAnimator.h"
 
 #include "include/core/SkColor.h"
-#include "include/core/SkPoint.h"
-#include "include/private/SkColorData.h"
+#include "include/private/base/SkCPUTypes.h"
 #include "modules/skottie/src/SkottieValue.h"
 #include "modules/skottie/src/animator/Animator.h"
 #include "modules/skottie/src/text/RangeSelector.h"
@@ -17,7 +16,10 @@
 #include "src/core/SkSwizzlePriv.h"
 #include "src/utils/SkJSON.h"
 
+#include <algorithm>
 #include <cmath>
+#include <cstdint>
+#include <utility>
 
 namespace skottie {
 namespace internal {
diff --git a/modules/skottie/src/text/TextAnimator.h b/modules/skottie/src/text/TextAnimator.h
index 122f5e7..7cb8b19 100644
--- a/modules/skottie/src/text/TextAnimator.h
+++ b/modules/skottie/src/text/TextAnimator.h
@@ -8,17 +8,20 @@
 #ifndef SkottieTextAnimator_DEFINED
 #define SkottieTextAnimator_DEFINED
 
+#include "include/core/SkColor.h"
 #include "include/core/SkM44.h"
 #include "include/core/SkRefCnt.h"
-#include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
 
-#include <memory>
+#include <cstddef>
 #include <vector>
 
+namespace skjson {
+class ObjectValue;
+}
+
 namespace skottie {
 namespace internal {
-
 class AnimatablePropertyContainer;
 class AnimationBuilder;
 class RangeSelector;
diff --git a/modules/skottie/src/text/TextShaper.cpp b/modules/skottie/src/text/TextShaper.cpp
index 46b8ce3..db3f19c 100644
--- a/modules/skottie/src/text/TextShaper.cpp
+++ b/modules/skottie/src/text/TextShaper.cpp
@@ -10,6 +10,11 @@
 #include "include/core/SkCanvas.h"
 #include "include/core/SkFontMetrics.h"
 #include "include/core/SkFontMgr.h"
+#include "include/core/SkFontTypes.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
+#include "include/core/SkTypeface.h"
 #include "include/core/SkTypes.h"
 #include "include/private/base/SkTArray.h"
 #include "include/private/base/SkTPin.h"
@@ -25,8 +30,11 @@
 #endif
 
 #include <algorithm>
-#include <limits.h>
+#include <memory>
 #include <numeric>
+#include <utility>
+
+class SkPaint;
 
 using namespace skia_private;
 
diff --git a/modules/skottie/src/text/TextValue.cpp b/modules/skottie/src/text/TextValue.cpp
index aef5f3e..fbd447d 100644
--- a/modules/skottie/src/text/TextValue.cpp
+++ b/modules/skottie/src/text/TextValue.cpp
@@ -7,9 +7,25 @@
 
 #include "modules/skottie/src/text/TextValue.h"
 
+#include "include/core/SkColor.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkString.h"
+#include "include/core/SkTypeface.h"
+#include "include/utils/SkTextUtils.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skottie/include/TextShaper.h"
 #include "modules/skottie/src/SkottieJson.h"
 #include "modules/skottie/src/SkottiePriv.h"
 #include "modules/skottie/src/SkottieValue.h"
+#include "src/utils/SkJSON.h"
+
+#include <algorithm>
+#include <array>
+#include <cstddef>
+#include <limits>
 
 namespace skottie::internal {
 
diff --git a/modules/skottie/tests/Expression.cpp b/modules/skottie/tests/Expression.cpp
index ae954dd..04f26b1 100644
--- a/modules/skottie/tests/Expression.cpp
+++ b/modules/skottie/tests/Expression.cpp
@@ -6,6 +6,7 @@
  */
 
 #include <iostream>
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkStream.h"
 #include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/include/SkottieProperty.h"
diff --git a/modules/skottie/tests/PropertyObserver.cpp b/modules/skottie/tests/PropertyObserver.cpp
index 01dd95c..3feaf58 100644
--- a/modules/skottie/tests/PropertyObserver.cpp
+++ b/modules/skottie/tests/PropertyObserver.cpp
@@ -6,6 +6,7 @@
  */
 
 #include "include/core/SkColor.h"
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkPictureRecorder.h"
 #include "include/core/SkStream.h"
 #include "modules/skottie/include/Skottie.h"
diff --git a/modules/skottie/utils/SkottieUtils.cpp b/modules/skottie/utils/SkottieUtils.cpp
index 8453c16..70f30a7 100644
--- a/modules/skottie/utils/SkottieUtils.cpp
+++ b/modules/skottie/utils/SkottieUtils.cpp
@@ -5,11 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "modules/skottie/src/SkottieJson.h"
-
 #include "modules/skottie/utils/SkottieUtils.h"
 
-#include "include/core/SkImage.h"
+#include "include/core/SkData.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkSize.h"
+#include "include/private/base/SkAssert.h"
+#include "modules/skottie/include/Skottie.h"
+#include "modules/skresources/include/SkResources.h"
+
+#include <cstring>
+#include <utility>
+
+class SkCanvas;
 
 namespace skottie_utils {
 
diff --git a/modules/skottie/utils/SkottieUtils.h b/modules/skottie/utils/SkottieUtils.h
index d536f41..2ced192 100644
--- a/modules/skottie/utils/SkottieUtils.h
+++ b/modules/skottie/utils/SkottieUtils.h
@@ -8,15 +8,27 @@
 #ifndef SkottieUtils_DEFINED
 #define SkottieUtils_DEFINED
 
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkString.h"
 #include "modules/skottie/include/ExternalLayer.h"
-#include "modules/skottie/include/Skottie.h"
 #include "modules/skottie/include/SkottieProperty.h"
 
+#include <cstddef>
 #include <memory>
 #include <string>
 #include <unordered_map>
 #include <vector>
 
+struct SkSize;
+
+namespace skottie {
+class MarkerObserver;
+}
+
+namespace skresources {
+class ResourceProvider;
+}
+
 namespace skottie_utils {
 
 /**
diff --git a/modules/skottie/utils/TextEditor.cpp b/modules/skottie/utils/TextEditor.cpp
index d753803..f6d03ee 100644
--- a/modules/skottie/utils/TextEditor.cpp
+++ b/modules/skottie/utils/TextEditor.cpp
@@ -10,10 +10,19 @@
 #include "include/core/SkCanvas.h"
 #include "include/core/SkColor.h"
 #include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
 #include "include/core/SkPath.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSpan.h"
 #include "include/core/SkString.h"
-#include "include/private/base/SkAssert.h"
 #include "src/base/SkUTF.h"
+#include "tools/skui/InputState.h"
+
+#include <algorithm>
+#include <limits>
+#include <utility>
 
 namespace skottie_utils {
 
diff --git a/modules/skottie/utils/TextEditor.h b/modules/skottie/utils/TextEditor.h
index 1e924f1..2e279ce 100644
--- a/modules/skottie/utils/TextEditor.h
+++ b/modules/skottie/utils/TextEditor.h
@@ -9,11 +9,25 @@
 #define SkottieTextEditor_DEFINED
 
 #include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkTypes.h"
 #include "modules/skottie/include/SkottieProperty.h"
-#include "tools/skui/InputState.h"
-#include "tools/skui/ModifierKey.h"
 
 #include <chrono>
+#include <cstddef>
+#include <memory>
+#include <tuple>
+#include <vector>
+
+class SkCanvas;
+class SkString;
+struct SkPoint;
+
+namespace skui {
+enum class InputState;
+enum class ModifierKey;
+}  // namespace skui
 
 namespace skottie_utils {
 
diff --git a/modules/sksg/include/SkSGClipEffect.h b/modules/sksg/include/SkSGClipEffect.h
index f157130..5d2b835 100644
--- a/modules/sksg/include/SkSGClipEffect.h
+++ b/modules/sksg/include/SkSGClipEffect.h
@@ -8,11 +8,20 @@
 #ifndef SkSGClipEffect_DEFINED
 #define SkSGClipEffect_DEFINED
 
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGEffectNode.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <utility>
+
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
 
 namespace sksg {
-
-class GeometryNode;
+class InvalidationController;
 
 /**
  * Concrete Effect node, applying a clip to its descendants.
@@ -47,6 +56,6 @@
     using INHERITED = EffectNode;
 };
 
-} // namespace sksg
+}  // namespace sksg
 
 #endif // SkSGClipEffect_DEFINED
diff --git a/modules/sksg/include/SkSGColorFilter.h b/modules/sksg/include/SkSGColorFilter.h
index c7befe9..2b5472a 100644
--- a/modules/sksg/include/SkSGColorFilter.h
+++ b/modules/sksg/include/SkSGColorFilter.h
@@ -8,17 +8,24 @@
 #ifndef SkSGColorFilter_DEFINED
 #define SkSGColorFilter_DEFINED
 
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGEffectNode.h"
-
-#include "include/core/SkBlendMode.h"
+#include "modules/sksg/include/SkSGNode.h"
 
 #include <vector>
 
-class SkColorFilter;
+class SkCanvas;
+class SkMatrix;
+enum class SkBlendMode;
+struct SkPoint;
 
 namespace sksg {
 
 class Color;
+class InvalidationController;
+class RenderNode;
 
 /**
  * Base class for nodes which apply a color filter when rendering their descendants.
diff --git a/modules/sksg/include/SkSGDraw.h b/modules/sksg/include/SkSGDraw.h
index 1672836..583d0ee 100644
--- a/modules/sksg/include/SkSGDraw.h
+++ b/modules/sksg/include/SkSGDraw.h
@@ -8,11 +8,20 @@
 #ifndef SkSGDraw_DEFINED
 #define SkSGDraw_DEFINED
 
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGGeometryNode.h"
 #include "modules/sksg/include/SkSGPaint.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 
+#include <utility>
+
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
+
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete rendering node.
diff --git a/modules/sksg/include/SkSGEffectNode.h b/modules/sksg/include/SkSGEffectNode.h
index 31daaa4..42dc4d9 100644
--- a/modules/sksg/include/SkSGEffectNode.h
+++ b/modules/sksg/include/SkSGEffectNode.h
@@ -8,9 +8,18 @@
 #ifndef SkSGEffectNode_DEFINED
 #define SkSGEffectNode_DEFINED
 
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 
+#include <cstdint>
+
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
+
 namespace sksg {
+class InvalidationController;
 
 /**
  * Base class for nodes which apply some transformation when rendering
diff --git a/modules/sksg/include/SkSGGeometryEffect.h b/modules/sksg/include/SkSGGeometryEffect.h
index 838684f..bc01ecc 100644
--- a/modules/sksg/include/SkSGGeometryEffect.h
+++ b/modules/sksg/include/SkSGGeometryEffect.h
@@ -8,14 +8,25 @@
 #ifndef SkSGGeometryEffect_DEFINED
 #define SkSGGeometryEffect_DEFINED
 
-#include "modules/sksg/include/SkSGGeometryNode.h"
-
 #include "include/core/SkPaint.h"
 #include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/effects/SkTrimPathEffect.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGTransform.h"
 
+#include <utility>
+#include <vector>
+
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
+
 namespace sksg {
+class InvalidationController;
 
 /**
  * Base class for geometry effects.
diff --git a/modules/sksg/include/SkSGGeometryNode.h b/modules/sksg/include/SkSGGeometryNode.h
index 6b5bf0b..b6dd9dc 100644
--- a/modules/sksg/include/SkSGGeometryNode.h
+++ b/modules/sksg/include/SkSGGeometryNode.h
@@ -13,6 +13,7 @@
 class SkCanvas;
 class SkPaint;
 class SkPath;
+struct SkPoint;
 
 namespace sksg {
 
diff --git a/modules/sksg/include/SkSGGradient.h b/modules/sksg/include/SkSGGradient.h
index f76c7b8..73df6e5 100644
--- a/modules/sksg/include/SkSGGradient.h
+++ b/modules/sksg/include/SkSGGradient.h
@@ -8,15 +8,18 @@
 #ifndef SkSGGradient_DEFINED
 #define SkSGGradient_DEFINED
 
-#include "modules/sksg/include/SkSGRenderEffect.h"
-
 #include "include/core/SkColor.h"
 #include "include/core/SkPoint.h"
+#include "include/core/SkRefCnt.h"
 #include "include/core/SkScalar.h"
-#include "include/core/SkShader.h"
+#include "include/core/SkTileMode.h"
+#include "modules/sksg/include/SkSGNode.h"
+#include "modules/sksg/include/SkSGRenderEffect.h"
 
 #include <vector>
 
+class SkShader;
+
 namespace sksg {
 
 /**
diff --git a/modules/sksg/include/SkSGGroup.h b/modules/sksg/include/SkSGGroup.h
index fed28eb..8563b60 100644
--- a/modules/sksg/include/SkSGGroup.h
+++ b/modules/sksg/include/SkSGGroup.h
@@ -8,11 +8,20 @@
 #ifndef SkSGGroup_DEFINED
 #define SkSGGroup_DEFINED
 
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 
+#include <cstddef>
+#include <utility>
 #include <vector>
 
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
+
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete node, grouping together multiple descendants.
diff --git a/modules/sksg/include/SkSGImage.h b/modules/sksg/include/SkSGImage.h
index 3f64f9d..6adbbfc 100644
--- a/modules/sksg/include/SkSGImage.h
+++ b/modules/sksg/include/SkSGImage.h
@@ -8,13 +8,21 @@
 #ifndef SkSGImage_DEFINED
 #define SkSGImage_DEFINED
 
+#include "include/core/SkImage.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSamplingOptions.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGRenderNode.h"
 
-#include "include/core/SkSamplingOptions.h"
+#include <utility>
 
-class SkImage;
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete rendering node, wrapping an SkImage.
diff --git a/modules/sksg/include/SkSGInvalidationController.h b/modules/sksg/include/SkSGInvalidationController.h
index df496ba..4d39501 100644
--- a/modules/sksg/include/SkSGInvalidationController.h
+++ b/modules/sksg/include/SkSGInvalidationController.h
@@ -9,12 +9,11 @@
 #define SkSGInvalidationController_DEFINED
 
 #include "include/core/SkMatrix.h"
+#include "include/core/SkRect.h"
 #include "include/core/SkTypes.h"
 
 #include <vector>
 
-struct SkRect;
-
 namespace sksg {
 
 /**
diff --git a/modules/sksg/include/SkSGMaskEffect.h b/modules/sksg/include/SkSGMaskEffect.h
index 2d7572a..1969283 100644
--- a/modules/sksg/include/SkSGMaskEffect.h
+++ b/modules/sksg/include/SkSGMaskEffect.h
@@ -8,9 +8,20 @@
 #ifndef SkSGMaskEffect_DEFINED
 #define SkSGMaskEffect_DEFINED
 
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGEffectNode.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <cstdint>
+#include <utility>
+
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete Effect node, applying a mask to its descendants.
diff --git a/modules/sksg/include/SkSGMerge.h b/modules/sksg/include/SkSGMerge.h
index 9599360..8987a3f 100644
--- a/modules/sksg/include/SkSGMerge.h
+++ b/modules/sksg/include/SkSGMerge.h
@@ -8,16 +8,21 @@
 #ifndef SkSGMerge_DEFINED
 #define SkSGMerge_DEFINED
 
+#include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGGeometryNode.h"
 
-#include "include/core/SkPath.h"
-
+#include <utility>
 #include <vector>
 
 class SkCanvas;
+class SkMatrix;
 class SkPaint;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete Geometry node, combining other geometries based on Mode.
diff --git a/modules/sksg/include/SkSGNode.h b/modules/sksg/include/SkSGNode.h
index dcad5a8..75491a5 100644
--- a/modules/sksg/include/SkSGNode.h
+++ b/modules/sksg/include/SkSGNode.h
@@ -10,10 +10,11 @@
 
 #include "include/core/SkRect.h"
 #include "include/core/SkRefCnt.h"
+#include "include/private/base/SkAssert.h"
 
+#include <cstdint>
 #include <vector>
 
-class SkCanvas;
 class SkMatrix;
 
 namespace sksg {
diff --git a/modules/sksg/include/SkSGOpacityEffect.h b/modules/sksg/include/SkSGOpacityEffect.h
index 90d7481..75f0808 100644
--- a/modules/sksg/include/SkSGOpacityEffect.h
+++ b/modules/sksg/include/SkSGOpacityEffect.h
@@ -8,9 +8,20 @@
 #ifndef SkSGOpacityEffect_DEFINED
 #define SkSGOpacityEffect_DEFINED
 
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGEffectNode.h"
+#include "modules/sksg/include/SkSGNode.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <utility>
+
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete Effect node, applying opacity to its descendants.
diff --git a/modules/sksg/include/SkSGPaint.h b/modules/sksg/include/SkSGPaint.h
index 55b25c6..94c4093 100644
--- a/modules/sksg/include/SkSGPaint.h
+++ b/modules/sksg/include/SkSGPaint.h
@@ -8,17 +8,22 @@
 #ifndef SkSGPaint_DEFINED
 #define SkSGPaint_DEFINED
 
-#include "modules/sksg/include/SkSGNode.h"
-
 #include "include/core/SkBlendMode.h"
 #include "include/core/SkColor.h"
 #include "include/core/SkPaint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "modules/sksg/include/SkSGNode.h"
+
+class SkMatrix;
 
 namespace skottie::internal {
 class AnimationBuilder;
 } // namespace skottie::internal
-namespace sksg {
 
+namespace sksg {
+class InvalidationController;
 class Shader;
 
 /**
@@ -102,6 +107,6 @@
     using INHERITED = PaintNode;
 };
 
-} // namespace sksg
+}  // namespace sksg
 
 #endif // SkSGPaint_DEFINED
diff --git a/modules/sksg/include/SkSGPath.h b/modules/sksg/include/SkSGPath.h
index 167fea1..8a6fe34 100644
--- a/modules/sksg/include/SkSGPath.h
+++ b/modules/sksg/include/SkSGPath.h
@@ -8,14 +8,20 @@
 #ifndef SkSGPath_DEFINED
 #define SkSGPath_DEFINED
 
-#include "modules/sksg/include/SkSGGeometryNode.h"
-
 #include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGNode.h"
 
 class SkCanvas;
+class SkMatrix;
 class SkPaint;
+enum class SkPathFillType;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete Geometry node, wrapping an SkPath.
diff --git a/modules/sksg/include/SkSGPlane.h b/modules/sksg/include/SkSGPlane.h
index 994ed6b..cd7154a 100644
--- a/modules/sksg/include/SkSGPlane.h
+++ b/modules/sksg/include/SkSGPlane.h
@@ -8,12 +8,18 @@
 #ifndef SkSGPlane_DEFINED
 #define SkSGPlane_DEFINED
 
+#include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGGeometryNode.h"
 
 class SkCanvas;
+class SkMatrix;
 class SkPaint;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete Geometry node, representing the whole canvas.
diff --git a/modules/sksg/include/SkSGRect.h b/modules/sksg/include/SkSGRect.h
index fa39a8f..6bdc6ce 100644
--- a/modules/sksg/include/SkSGRect.h
+++ b/modules/sksg/include/SkSGRect.h
@@ -8,16 +8,25 @@
 #ifndef SkSGRect_DEFINED
 #define SkSGRect_DEFINED
 
-#include "modules/sksg/include/SkSGGeometryNode.h"
-
 #include "include/core/SkPath.h"
+#include "include/core/SkPathTypes.h"
 #include "include/core/SkRRect.h"
 #include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkTo.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGNode.h"
+
+#include <cstdint>
 
 class SkCanvas;
+class SkMatrix;
 class SkPaint;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete Geometry node, wrapping an SkRect.
diff --git a/modules/sksg/include/SkSGRenderEffect.h b/modules/sksg/include/SkSGRenderEffect.h
index 74154ad..0306436 100644
--- a/modules/sksg/include/SkSGRenderEffect.h
+++ b/modules/sksg/include/SkSGRenderEffect.h
@@ -8,24 +8,30 @@
 #ifndef SkSGRenderEffect_DEFINED
 #define SkSGRenderEffect_DEFINED
 
+#include "include/core/SkBlendMode.h"
+#include "include/core/SkBlender.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkImageFilter.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkTileMode.h"
+#include "include/effects/SkImageFilters.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
 #include "modules/sksg/include/SkSGEffectNode.h"
 #include "modules/sksg/include/SkSGNode.h"
 
-#include "include/core/SkBlendMode.h"
-#include "include/core/SkColor.h"
-#include "include/effects/SkImageFilters.h"
+#include <optional>
 
-#include <memory>
-#include <vector>
+class SkCanvas;
+class SkMatrix;
 
 // TODO: merge EffectNode.h with this header
 
-class SkBlender;
-class SkImageFilter;
-class SkMaskFilter;
-class SkShader;
-
 namespace sksg {
+class InvalidationController;
+class RenderNode;
 
 /**
  * Shader base class.
diff --git a/modules/sksg/include/SkSGRenderNode.h b/modules/sksg/include/SkSGRenderNode.h
index 4f103ad..64fbc4b 100644
--- a/modules/sksg/include/SkSGRenderNode.h
+++ b/modules/sksg/include/SkSGRenderNode.h
@@ -8,16 +8,23 @@
 #ifndef SkSGRenderNode_DEFINED
 #define SkSGRenderNode_DEFINED
 
-#include "modules/sksg/include/SkSGNode.h"
-
 #include "include/core/SkBlender.h"
 #include "include/core/SkColorFilter.h"
 #include "include/core/SkMatrix.h"
+#include "include/core/SkRefCnt.h"
 #include "include/core/SkShader.h"
+#include "modules/sksg/include/SkSGNode.h"
+
+#include <cstddef>
+#include <cstdint>
+#include <utility>
+#include <vector>
 
 class SkCanvas;
 class SkImageFilter;
 class SkPaint;
+struct SkPoint;
+struct SkRect;
 
 namespace sksg {
 
diff --git a/modules/sksg/include/SkSGScene.h b/modules/sksg/include/SkSGScene.h
index 8ad19a2..c59dd21 100644
--- a/modules/sksg/include/SkSGScene.h
+++ b/modules/sksg/include/SkSGScene.h
@@ -12,7 +12,6 @@
 #include "include/core/SkTypes.h"
 
 #include <memory>
-#include <vector>
 
 class SkCanvas;
 struct SkPoint;
diff --git a/modules/sksg/include/SkSGText.h b/modules/sksg/include/SkSGText.h
index 77056b2..de4444c 100644
--- a/modules/sksg/include/SkSGText.h
+++ b/modules/sksg/include/SkSGText.h
@@ -8,19 +8,26 @@
 #ifndef SkSGText_DEFINED
 #define SkSGText_DEFINED
 
-#include "modules/sksg/include/SkSGGeometryNode.h"
-
 #include "include/core/SkFont.h"
+#include "include/core/SkFontTypes.h"
+#include "include/core/SkPath.h"
 #include "include/core/SkPoint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
 #include "include/core/SkString.h"
-#include "include/core/SkTextBlob.h"
 #include "include/utils/SkTextUtils.h"
+#include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGNode.h"
 
 class SkCanvas;
+class SkMatrix;
 class SkPaint;
+class SkTextBlob;
 class SkTypeface;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Concrete Geometry node, wrapping a (shaped) SkTextBlob.
diff --git a/modules/sksg/include/SkSGTransform.h b/modules/sksg/include/SkSGTransform.h
index 65f0851..8dc1646 100644
--- a/modules/sksg/include/SkSGTransform.h
+++ b/modules/sksg/include/SkSGTransform.h
@@ -8,12 +8,22 @@
 #ifndef SkSGTransform_DEFINED
 #define SkSGTransform_DEFINED
 
+#include "include/core/SkM44.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
 #include "modules/sksg/include/SkSGEffectNode.h"
+#include "modules/sksg/include/SkSGNode.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 
-class SkM44;
-class SkMatrix;
+#include <type_traits>
+#include <utility>
+
+class SkCanvas;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 /**
  * Transformations base class.
diff --git a/modules/sksg/src/SkSGClipEffect.cpp b/modules/sksg/src/SkSGClipEffect.cpp
index da25ab4..cccaf5d 100644
--- a/modules/sksg/src/SkSGClipEffect.cpp
+++ b/modules/sksg/src/SkSGClipEffect.cpp
@@ -9,9 +9,15 @@
 
 #include "include/core/SkCanvas.h"
 #include "include/core/SkPath.h"
+#include "include/private/base/SkAssert.h"
 #include "modules/sksg/include/SkSGGeometryNode.h"
+#include "modules/sksg/include/SkSGNode.h"
+
+class SkMatrix;
+struct SkPoint;
 
 namespace sksg {
+class InvalidationController;
 
 ClipEffect::ClipEffect(sk_sp<RenderNode> child, sk_sp<GeometryNode> clip, bool aa, bool force_clip)
     : INHERITED(std::move(child))
diff --git a/modules/sksg/src/SkSGColorFilter.cpp b/modules/sksg/src/SkSGColorFilter.cpp
index f9897d2..b194edc 100644
--- a/modules/sksg/src/SkSGColorFilter.cpp
+++ b/modules/sksg/src/SkSGColorFilter.cpp
@@ -7,11 +7,22 @@
 
 #include "modules/sksg/include/SkSGColorFilter.h"
 
+#include "include/core/SkColor.h"
 #include "include/core/SkColorFilter.h"
+#include "include/core/SkMatrix.h"
 #include "include/private/SkColorData.h"
+#include "include/private/base/SkAssert.h"
 #include "modules/sksg/include/SkSGPaint.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 
 #include <cmath>
+#include <cstddef>
+#include <cstdint>
+#include <utility>
+
+class SkCanvas;
+enum class SkBlendMode;
+struct SkPoint;
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGDraw.cpp b/modules/sksg/src/SkSGDraw.cpp
index 8baf27a..459398f 100644
--- a/modules/sksg/src/SkSGDraw.cpp
+++ b/modules/sksg/src/SkSGDraw.cpp
@@ -5,15 +5,18 @@
  * found in the LICENSE file.
  */
 
-#include "modules/sksg/include/SkSGDraw.h"
-
 #include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
 #include "include/core/SkPath.h"
 #include "include/core/SkPathUtils.h"
+#include "include/core/SkPoint.h"
+#include "include/private/base/SkAssert.h"
+#include "modules/sksg/include/SkSGDraw.h"
 #include "modules/sksg/include/SkSGGeometryNode.h"
-#include "modules/sksg/include/SkSGInvalidationController.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "modules/sksg/include/SkSGPaint.h"
-#include "src/base/SkTLazy.h"
+
+class SkMatrix;
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGEffectNode.cpp b/modules/sksg/src/SkSGEffectNode.cpp
index a17c705..de61182 100644
--- a/modules/sksg/src/SkSGEffectNode.cpp
+++ b/modules/sksg/src/SkSGEffectNode.cpp
@@ -4,10 +4,19 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-
 #include "modules/sksg/include/SkSGEffectNode.h"
 
+#include "include/private/base/SkAssert.h"
+#include "modules/sksg/include/SkSGNode.h"
+
+#include <utility>
+
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
+
 namespace sksg {
+class InvalidationController;
 
 EffectNode::EffectNode(sk_sp<RenderNode> child, uint32_t inval_traits)
     : INHERITED(inval_traits)
diff --git a/modules/sksg/src/SkSGGeometryEffect.cpp b/modules/sksg/src/SkSGGeometryEffect.cpp
index 2d57c8f..eb9c6c3 100644
--- a/modules/sksg/src/SkSGGeometryEffect.cpp
+++ b/modules/sksg/src/SkSGGeometryEffect.cpp
@@ -8,17 +8,24 @@
 #include "modules/sksg/include/SkSGGeometryEffect.h"
 
 #include "include/core/SkCanvas.h"
+#include "include/core/SkClipOp.h"
+#include "include/core/SkMatrix.h"
 #include "include/core/SkPath.h"
+#include "include/core/SkPathEffect.h"
 #include "include/core/SkPathUtils.h"
 #include "include/core/SkStrokeRec.h"
 #include "include/effects/SkCornerPathEffect.h"
 #include "include/effects/SkDashPathEffect.h"
 #include "include/effects/SkTrimPathEffect.h"
 #include "include/pathops/SkPathOps.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkPoint_impl.h"
+#include "include/private/base/SkTArray.h"
+#include "include/private/base/SkTo.h"
 #include "modules/sksg/src/SkSGTransformPriv.h"
-#include "src/core/SkPathEffectBase.h"
 #include "src/core/SkPathPriv.h"
 
+#include <algorithm>
 #include <cmath>
 
 using namespace skia_private;
diff --git a/modules/sksg/src/SkSGGeometryNode.cpp b/modules/sksg/src/SkSGGeometryNode.cpp
index 653866e..7d855d2 100644
--- a/modules/sksg/src/SkSGGeometryNode.cpp
+++ b/modules/sksg/src/SkSGGeometryNode.cpp
@@ -8,6 +8,9 @@
 #include "modules/sksg/include/SkSGGeometryNode.h"
 
 #include "include/core/SkPath.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRect.h"
+#include "include/private/base/SkAssert.h"
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGGradient.cpp b/modules/sksg/src/SkSGGradient.cpp
index 3745bbc..3baf5f2 100644
--- a/modules/sksg/src/SkSGGradient.cpp
+++ b/modules/sksg/src/SkSGGradient.cpp
@@ -8,9 +8,11 @@
 #include "modules/sksg/include/SkSGGradient.h"
 
 #include "include/core/SkColorSpace.h"
-#include "include/core/SkPaint.h"
+#include "include/core/SkShader.h"
 #include "include/effects/SkGradientShader.h"
+#include "include/private/base/SkAssert.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTo.h"
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGGroup.cpp b/modules/sksg/src/SkSGGroup.cpp
index f60c6ff..5afef0a 100644
--- a/modules/sksg/src/SkSGGroup.cpp
+++ b/modules/sksg/src/SkSGGroup.cpp
@@ -8,10 +8,17 @@
 #include "modules/sksg/include/SkSGGroup.h"
 
 #include "include/core/SkCanvas.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkDebug.h"
+#include "modules/sksg/include/SkSGNode.h"
 
 #include <algorithm>
 
+class SkMatrix;
+struct SkPoint;
+
 namespace sksg {
+class InvalidationController;
 
 Group::Group() = default;
 
diff --git a/modules/sksg/src/SkSGImage.cpp b/modules/sksg/src/SkSGImage.cpp
index 103f313..0bef108 100644
--- a/modules/sksg/src/SkSGImage.cpp
+++ b/modules/sksg/src/SkSGImage.cpp
@@ -9,7 +9,9 @@
 
 #include "include/core/SkCanvas.h"
 #include "include/core/SkImage.h"
-#include "src/core/SkPaintPriv.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPoint.h"
+#include "include/private/base/SkAssert.h"
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGMaskEffect.cpp b/modules/sksg/src/SkSGMaskEffect.cpp
index 08547a4..866ecb0 100644
--- a/modules/sksg/src/SkSGMaskEffect.cpp
+++ b/modules/sksg/src/SkSGMaskEffect.cpp
@@ -7,8 +7,17 @@
 
 #include "modules/sksg/include/SkSGMaskEffect.h"
 
+#include "include/core/SkBlendMode.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkPaint.h"
 #include "include/effects/SkLumaColorFilter.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkTo.h"
+#include "modules/sksg/include/SkSGNode.h"
+
+class SkMatrix;
+struct SkPoint;
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGMerge.cpp b/modules/sksg/src/SkSGMerge.cpp
index d7f8607..a814351 100644
--- a/modules/sksg/src/SkSGMerge.cpp
+++ b/modules/sksg/src/SkSGMerge.cpp
@@ -8,9 +8,15 @@
 #include "modules/sksg/include/SkSGMerge.h"
 
 #include "include/core/SkCanvas.h"
+#include "include/core/SkClipOp.h"
+#include "include/core/SkPoint.h"
 #include "include/pathops/SkPathOps.h"
+#include "include/private/base/SkAssert.h"
+#include "modules/sksg/include/SkSGNode.h"
 #include "src/core/SkPathPriv.h"
 
+class SkMatrix;
+
 namespace sksg {
 
 Merge::Merge(std::vector<Rec>&& recs)
diff --git a/modules/sksg/src/SkSGNode.cpp b/modules/sksg/src/SkSGNode.cpp
index 0b2818f..cdd5b67 100644
--- a/modules/sksg/src/SkSGNode.cpp
+++ b/modules/sksg/src/SkSGNode.cpp
@@ -5,8 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "modules/sksg/include/SkSGInvalidationController.h"
 #include "modules/sksg/include/SkSGNode.h"
+
+#include "include/private/base/SkDebug.h"
+#include "modules/sksg/include/SkSGInvalidationController.h"
 #include "src/core/SkRectPriv.h"
 
 #include <algorithm>
diff --git a/modules/sksg/src/SkSGOpacityEffect.cpp b/modules/sksg/src/SkSGOpacityEffect.cpp
index 513909f6..bc46de0 100644
--- a/modules/sksg/src/SkSGOpacityEffect.cpp
+++ b/modules/sksg/src/SkSGOpacityEffect.cpp
@@ -5,9 +5,15 @@
  * found in the LICENSE file.
  */
 
+#include "include/private/base/SkAssert.h"
 #include "modules/sksg/include/SkSGOpacityEffect.h"
 
+class SkCanvas;
+class SkMatrix;
+struct SkPoint;
+
 namespace sksg {
+class InvalidationController;
 
 OpacityEffect::OpacityEffect(sk_sp<RenderNode> child, float opacity)
     : INHERITED(std::move(child))
diff --git a/modules/sksg/src/SkSGPaint.cpp b/modules/sksg/src/SkSGPaint.cpp
index 7910d9a..a053fa2 100644
--- a/modules/sksg/src/SkSGPaint.cpp
+++ b/modules/sksg/src/SkSGPaint.cpp
@@ -5,11 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "modules/sksg/include/SkSGPaint.h"
-
+#include "include/core/SkShader.h"
+#include "include/private/base/SkAssert.h"
 #include "include/private/base/SkTPin.h"
+#include "modules/sksg/include/SkSGPaint.h"
 #include "modules/sksg/include/SkSGRenderEffect.h"
 
+#include <utility>
+
+class SkMatrix;
+
 namespace sksg {
 
 // Paint nodes don't generate damage on their own, but via their aggregation ancestor Draw nodes.
diff --git a/modules/sksg/src/SkSGPath.cpp b/modules/sksg/src/SkSGPath.cpp
index a67eed8..1e35e8c 100644
--- a/modules/sksg/src/SkSGPath.cpp
+++ b/modules/sksg/src/SkSGPath.cpp
@@ -8,9 +8,14 @@
 #include "modules/sksg/include/SkSGPath.h"
 
 #include "include/core/SkCanvas.h"
-#include "include/core/SkPaint.h"
+#include "include/core/SkClipOp.h"
+#include "include/core/SkPathTypes.h"
+#include "include/core/SkPoint.h"
+#include "include/private/base/SkAssert.h"
 #include "src/core/SkRectPriv.h"
 
+class SkMatrix;
+
 namespace sksg {
 
 Path::Path(const SkPath& path) : fPath(path) {}
diff --git a/modules/sksg/src/SkSGPlane.cpp b/modules/sksg/src/SkSGPlane.cpp
index c207289..bb30aba 100644
--- a/modules/sksg/src/SkSGPlane.cpp
+++ b/modules/sksg/src/SkSGPlane.cpp
@@ -9,9 +9,14 @@
 
 #include "include/core/SkCanvas.h"
 #include "include/core/SkPath.h"
+#include "include/core/SkPathTypes.h"
+#include "include/core/SkScalar.h"
+#include "include/private/base/SkAssert.h"
+
+class SkMatrix;
+struct SkPoint;
 
 namespace sksg {
-
 Plane::Plane() = default;
 
 void Plane::onClip(SkCanvas*, bool) const {}
@@ -35,4 +40,4 @@
     return path;
 }
 
-} // namespace sksg
+}  // namespace sksg
diff --git a/modules/sksg/src/SkSGRect.cpp b/modules/sksg/src/SkSGRect.cpp
index ece6331..1b01aad 100644
--- a/modules/sksg/src/SkSGRect.cpp
+++ b/modules/sksg/src/SkSGRect.cpp
@@ -8,8 +8,12 @@
 #include "modules/sksg/include/SkSGRect.h"
 
 #include "include/core/SkCanvas.h"
-#include "include/core/SkPaint.h"
+#include "include/core/SkClipOp.h"
 #include "include/core/SkPath.h"
+#include "include/core/SkPoint.h"
+#include "include/private/base/SkAssert.h"
+
+class SkMatrix;
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGRenderEffect.cpp b/modules/sksg/src/SkSGRenderEffect.cpp
index 2f82977..de77b9d 100644
--- a/modules/sksg/src/SkSGRenderEffect.cpp
+++ b/modules/sksg/src/SkSGRenderEffect.cpp
@@ -9,11 +9,15 @@
 
 #include "include/core/SkBlender.h"
 #include "include/core/SkCanvas.h"
-#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPaint.h"
 #include "include/core/SkShader.h"
 #include "include/core/SkTileMode.h"
 #include "include/effects/SkImageFilters.h"
-#include "src/core/SkMaskFilterBase.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
+
+#include <utility>
+
+class SkMatrix;
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGRenderNode.cpp b/modules/sksg/src/SkSGRenderNode.cpp
index 3bc123b..6d4a53b 100644
--- a/modules/sksg/src/SkSGRenderNode.cpp
+++ b/modules/sksg/src/SkSGRenderNode.cpp
@@ -7,9 +7,16 @@
 
 #include "modules/sksg/include/SkSGRenderNode.h"
 
+#include "include/core/SkBlendMode.h"
 #include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
 #include "include/core/SkImageFilter.h"
 #include "include/core/SkPaint.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRect.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkFloatingPoint.h"
+#include "include/private/base/SkTo.h"
 #include "modules/sksg/src/SkSGNodePriv.h"
 
 namespace sksg {
diff --git a/modules/sksg/src/SkSGScene.cpp b/modules/sksg/src/SkSGScene.cpp
index 2a84ce6..2f52a42 100644
--- a/modules/sksg/src/SkSGScene.cpp
+++ b/modules/sksg/src/SkSGScene.cpp
@@ -5,13 +5,11 @@
  * found in the LICENSE file.
  */
 
+#include "include/core/SkMatrix.h"
+#include "modules/sksg/include/SkSGRenderNode.h"
 #include "modules/sksg/include/SkSGScene.h"
 
-#include "include/core/SkCanvas.h"
-#include "include/core/SkMatrix.h"
-#include "include/core/SkPaint.h"
-#include "modules/sksg/include/SkSGInvalidationController.h"
-#include "modules/sksg/include/SkSGRenderNode.h"
+#include <utility>
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGText.cpp b/modules/sksg/src/SkSGText.cpp
index 1eca22b..98faeaa 100644
--- a/modules/sksg/src/SkSGText.cpp
+++ b/modules/sksg/src/SkSGText.cpp
@@ -8,10 +8,13 @@
 #include "modules/sksg/include/SkSGText.h"
 
 #include "include/core/SkCanvas.h"
-#include "include/core/SkPaint.h"
 #include "include/core/SkPath.h"
+#include "include/core/SkTextBlob.h"
 #include "include/core/SkTypeface.h"
-#include "include/private/base/SkTArray.h"
+
+#include <utility>
+
+class SkMatrix;
 
 namespace sksg {
 
diff --git a/modules/sksg/src/SkSGTransform.cpp b/modules/sksg/src/SkSGTransform.cpp
index 7f31752..b774275 100644
--- a/modules/sksg/src/SkSGTransform.cpp
+++ b/modules/sksg/src/SkSGTransform.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "modules/sksg/include/SkSGTransform.h"
-
 #include "include/core/SkCanvas.h"
+#include "include/core/SkPoint.h"
+#include "include/private/base/SkAssert.h"
+#include "modules/sksg/include/SkSGTransform.h"
 #include "modules/sksg/src/SkSGTransformPriv.h"
 
 namespace sksg {
-
 namespace {
 
 template <typename T>
diff --git a/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp b/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp
index 792199f..5839b8a 100644
--- a/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp
+++ b/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp
@@ -14,10 +14,10 @@
 #include "include/core/SkCanvas.h"
 #include "include/core/SkColor.h"
 #include "include/core/SkColorSpace.h"
+#include "include/core/SkFontMgr.h"
 #include "include/core/SkStream.h"
 #include "include/core/SkSurface.h"
 #include "include/ports/SkFontMgr_empty.h"
-#include "modules/skresources/include/SkResources.h"
 
 #include <jni.h>
 #include <math.h>
@@ -32,8 +32,10 @@
 #include "include/gpu/ganesh/gl/GrGLDirectContext.h"
 #include "include/gpu/gl/GrGLInterface.h"
 #include "include/gpu/gl/GrGLTypes.h"
+#include "include/gpu/gl/egl/GrGLMakeEGLInterface.h"
 
 #include "modules/skottie/include/Skottie.h"
+#include "modules/skresources/include/SkResources.h"
 #include "modules/sksg/include/SkSGInvalidationController.h"
 
 #include <GLES2/gl2.h>
@@ -83,7 +85,7 @@
 extern "C" JNIEXPORT jlong
 JNICALL
 Java_org_skia_skottie_SkottieRunner_nCreateProxy(JNIEnv *env, jclass clazz) {
-    sk_sp<const GrGLInterface> glInterface = GrGLMakeNativeInterface();
+    sk_sp<const GrGLInterface> glInterface = GrGLInterfaces::MakeEGL();
     if (!glInterface.get()) {
         return 0;
     }
diff --git a/src/gpu/ganesh/GrDataUtils.cpp b/src/gpu/ganesh/GrDataUtils.cpp
index 340baf2..516d190 100644
--- a/src/gpu/ganesh/GrDataUtils.cpp
+++ b/src/gpu/ganesh/GrDataUtils.cpp
@@ -7,26 +7,39 @@
 
 #include "src/gpu/ganesh/GrDataUtils.h"
 
+#include "include/core/SkAlphaType.h"
 #include "include/core/SkColorSpace.h"
+#include "include/core/SkColorType.h"
+#include "include/core/SkPixmap.h"
 #include "include/core/SkTextureCompressionType.h"
+#include "include/gpu/GpuTypes.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkMath.h"
 #include "include/private/base/SkTPin.h"
+#include "include/private/base/SkTemplates.h"
+#include "include/private/base/SkTo.h"
+#include "include/private/gpu/ganesh/GrTypesPriv.h"
 #include "modules/skcms/skcms.h"
+#include "src/base/SkArenaAlloc.h"
 #include "src/base/SkMathPriv.h"
 #include "src/base/SkRectMemcpy.h"
 #include "src/base/SkTLazy.h"
-#include "src/base/SkUtils.h"
 #include "src/core/SkColorSpaceXformSteps.h"
 #include "src/core/SkCompressedDataUtils.h"
 #include "src/core/SkMipmap.h"
 #include "src/core/SkRasterPipeline.h"
+#include "src/core/SkRasterPipelineOpContexts.h"
 #include "src/core/SkRasterPipelineOpList.h"
 #include "src/core/SkTraceEvent.h"
 #include "src/gpu/Swizzle.h"
-#include "src/gpu/ganesh/GrCaps.h"
-#include "src/gpu/ganesh/GrColor.h"
 #include "src/gpu/ganesh/GrImageInfo.h"
 #include "src/gpu/ganesh/GrPixmap.h"
 
+#include <algorithm>
+#include <cstdint>
+#include <cstring>
+#include <functional>
+
 using namespace skia_private;
 
 struct ETC1Block {
diff --git a/src/gpu/ganesh/GrDataUtils.h b/src/gpu/ganesh/GrDataUtils.h
index e96063d..7805e9e 100644
--- a/src/gpu/ganesh/GrDataUtils.h
+++ b/src/gpu/ganesh/GrDataUtils.h
@@ -9,16 +9,20 @@
 #define GrDataUtils_DEFINED
 
 #include "include/core/SkColor.h"
+#include "include/core/SkSize.h"
 #include "include/private/base/SkTArray.h"
-#include "include/private/gpu/ganesh/GrTypesPriv.h"
 
+#include <array>
 #include <cstddef>
 
-class GrImageInfo;
 class GrCPixmap;
+class GrImageInfo;
 class GrPixmap;
 class SkPixmap;
 enum class SkTextureCompressionType;
+namespace skgpu {
+enum class Mipmapped : bool;
+}
 
 size_t GrNumBlocks(SkTextureCompressionType, SkISize baseDimensions);
 
diff --git a/src/gpu/ganesh/GrStencilSettings.cpp b/src/gpu/ganesh/GrStencilSettings.cpp
index 0b5fcfc..8ac5757 100644
--- a/src/gpu/ganesh/GrStencilSettings.cpp
+++ b/src/gpu/ganesh/GrStencilSettings.cpp
@@ -4,12 +4,14 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-
-
 #include "src/gpu/ganesh/GrStencilSettings.h"
 
+#include "include/private/base/SkDebug.h"
 #include "src/gpu/KeyBuilder.h"
-#include "src/gpu/ganesh/GrProcessor.h"
+
+#include <algorithm>
+#include <cstddef>
+#include <cstring>
 
 constexpr const GrUserStencilSettings gUnused(
     GrUserStencilSettings::StaticInit<
diff --git a/src/gpu/ganesh/GrStencilSettings.h b/src/gpu/ganesh/GrStencilSettings.h
index a0b6038..814c940 100644
--- a/src/gpu/ganesh/GrStencilSettings.h
+++ b/src/gpu/ganesh/GrStencilSettings.h
@@ -4,14 +4,15 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-
-
 #ifndef GrStencilSettings_DEFINED
 #define GrStencilSettings_DEFINED
 
-#include "include/core/SkRegion.h"
+#include "include/gpu/GrTypes.h"
+#include "include/private/base/SkAssert.h"
 #include "src/gpu/ganesh/GrUserStencilSettings.h"
 
+#include <cstdint>
+
 namespace skgpu {
 class KeyBuilder;
 }
diff --git a/src/gpu/ganesh/vk/GrVkUtil.h b/src/gpu/ganesh/vk/GrVkUtil.h
index 3b23bf2..4f7cb27 100644
--- a/src/gpu/ganesh/vk/GrVkUtil.h
+++ b/src/gpu/ganesh/vk/GrVkUtil.h
@@ -11,6 +11,7 @@
 #include "include/gpu/GrTypes.h"
 #include "include/gpu/vk/GrVkTypes.h"
 #include "include/private/base/SkMacros.h"
+#include "include/private/gpu/ganesh/GrTypesPriv.h"
 #include "src/gpu/ganesh/GrColor.h"
 #include "src/gpu/ganesh/GrDataUtils.h"
 #include "src/gpu/vk/VulkanInterface.h"
diff --git a/src/ports/SkImageGeneratorCG.cpp b/src/ports/SkImageGeneratorCG.cpp
index bda7d7f..dda500e 100644
--- a/src/ports/SkImageGeneratorCG.cpp
+++ b/src/ports/SkImageGeneratorCG.cpp
@@ -4,9 +4,9 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
+#include "include/ports/SkImageGeneratorCG.h"
 
 #include "include/codec/SkEncodedOrigin.h"
-#include "include/ports/SkImageGeneratorCG.h"
 #include "include/private/base/SkTemplates.h"
 #include "include/utils/mac/SkCGUtils.h"
 #include "src/codec/SkPixmapUtilsPriv.h"
diff --git a/toolchain/linux_trampolines/IWYU_mapping.imp b/toolchain/linux_trampolines/IWYU_mapping.imp
index 0c28db7..2857aad 100644
--- a/toolchain/linux_trampolines/IWYU_mapping.imp
+++ b/toolchain/linux_trampolines/IWYU_mapping.imp
@@ -25,6 +25,7 @@
   { include: ["<__algorithm/search.h>", "private", "<algorithm>", "public"] },
   { include: ["<__algorithm/sort.h>", "private", "<algorithm>", "public"] },
   { include: ["<__algorithm/stable_sort.h>", "private", "<algorithm>", "public"] },
+  { include: ["<__algorithm/transform.h>", "private", "<algorithm>", "public"] },
   { include: ["<__algorithm/unique.h>", "private", "<algorithm>", "public"] },
   { include: ["<__algorithm/upper_bound.h>", "private", "<algorithm>", "public"] },
 
diff --git a/toolchain/linux_trampolines/clang_trampoline_linux.sh b/toolchain/linux_trampolines/clang_trampoline_linux.sh
index 4e5e5ef..7439ceb 100755
--- a/toolchain/linux_trampolines/clang_trampoline_linux.sh
+++ b/toolchain/linux_trampolines/clang_trampoline_linux.sh
@@ -27,6 +27,8 @@
   "gm/"
   "include/private/base/"
   "modules/bentleyottmann/"
+  "modules/skottie/"
+  "modules/sksg/"
   "modules/skshaper/"
   "modules/skunicode/"
   "src/base/"
@@ -90,6 +92,8 @@
   "src/gpu/ganesh/tessellate/StrokeTessellator.cpp"
   "src/gpu/ganesh/vk/GrVkDirectContext.cpp"
   "src/gpu/ganesh/ops/DrawAtlasPathOp.cpp"
+  "src/gpu/ganesh/GrStencilSettings.cpp"
+  "src/gpu/ganesh/GrDataUtils.cpp"
   "src/gpu/vk/VulkanMutableTextureState.cpp"
   "src/pdf/SkJpeg"
   "tools/DecodeUtils.cpp"
@@ -115,6 +119,7 @@
   "src/core/SkMaskBlurFilter.cpp"
   "src/core/SkM44.cpp"
   "src/core/SkPixmap.cpp"
+  "modules/skottie/src/effects/MotionBlurEffect.cpp"
 )
 
 function opted_in_to_IWYU_checks() {
diff --git a/tools/viewer/SkottieSlide.cpp b/tools/viewer/SkottieSlide.cpp
index afdb5a7..cb283f7 100644
--- a/tools/viewer/SkottieSlide.cpp
+++ b/tools/viewer/SkottieSlide.cpp
@@ -11,6 +11,7 @@
 
 #include "include/core/SkCanvas.h"
 #include "include/core/SkFont.h"
+#include "include/core/SkFontMgr.h"
 #include "include/private/base/SkNoncopyable.h"
 #include "include/private/base/SkTPin.h"
 #include "modules/audioplayer/SkAudioPlayer.h"