[go: nahoru, domu]

Optimizes Material Icon generation by removing `by lazy`

This delegate causes a lot more code to be generated under the hood, which adds up when there are 5000+ icons.
AAR size before/after this change:

Before: 19.6mb
After: 13.8mb

Also inlines lambda functions for building paths / groups.

Bug: b/161830226
Test: VectorAssetGeneratorTest
Relnote: N/A
Change-Id: I8841a9dead4171aa0516053553479d02edb36a8a
diff --git a/ui/ui-core/api/0.1.0-dev16.txt b/ui/ui-core/api/0.1.0-dev16.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/0.1.0-dev16.txt
+++ b/ui/ui-core/api/0.1.0-dev16.txt
@@ -43,8 +43,8 @@
   }
 
   public final class VectorAssetBuilderKt {
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
   public final class VectorComposeKt {
diff --git a/ui/ui-core/api/current.txt b/ui/ui-core/api/current.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/current.txt
+++ b/ui/ui-core/api/current.txt
@@ -43,8 +43,8 @@
   }
 
   public final class VectorAssetBuilderKt {
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
   public final class VectorComposeKt {
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt
@@ -43,8 +43,8 @@
   }
 
   public final class VectorAssetBuilderKt {
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
   public final class VectorComposeKt {
diff --git a/ui/ui-core/api/public_plus_experimental_current.txt b/ui/ui-core/api/public_plus_experimental_current.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-core/api/public_plus_experimental_current.txt
@@ -43,8 +43,8 @@
   }
 
   public final class VectorAssetBuilderKt {
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
   public final class VectorComposeKt {
diff --git a/ui/ui-core/api/restricted_0.1.0-dev16.txt b/ui/ui-core/api/restricted_0.1.0-dev16.txt
index 4606ee4d..9971294 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev16.txt
@@ -43,8 +43,8 @@
   }
 
   public final class VectorAssetBuilderKt {
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
   public final class VectorComposeKt {
diff --git a/ui/ui-core/api/restricted_current.txt b/ui/ui-core/api/restricted_current.txt
index 4606ee4d..9971294 100644
--- a/ui/ui-core/api/restricted_current.txt
+++ b/ui/ui-core/api/restricted_current.txt
@@ -43,8 +43,8 @@
   }
 
   public final class VectorAssetBuilderKt {
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
   public final class VectorComposeKt {
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt b/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt
index b083c2e..cd30ef7 100644
--- a/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt
@@ -230,7 +230,7 @@
  * @param strokeLineMiter specifies the miter limit for a stroked path
  * @param pathBuilder [PathBuilder] lambda for adding [PathNode]s to this path.
  */
-fun VectorAssetBuilder.path(
+inline fun VectorAssetBuilder.path(
     name: String = DefaultPathName,
     fill: Brush? = null,
     fillAlpha: Float = 1.0f,
@@ -270,7 +270,7 @@
  * @param clipPathData the path information used to clip the content within the group
  * @param block builder lambda to add children to this group
  */
-fun VectorAssetBuilder.group(
+inline fun VectorAssetBuilder.group(
     name: String = DefaultGroupName,
     rotate: Float = DefaultRotation,
     pivotX: Float = DefaultPivotX,
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev16.txt b/ui/ui-material/icons/core/api/0.1.0-dev16.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev16.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev16.txt
@@ -28,8 +28,8 @@
   }
 
   public final class IconsKt {
-    method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
 }
diff --git a/ui/ui-material/icons/core/api/current.txt b/ui/ui-material/icons/core/api/current.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/current.txt
+++ b/ui/ui-material/icons/core/api/current.txt
@@ -28,8 +28,8 @@
   }
 
   public final class IconsKt {
-    method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
 }
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt
@@ -28,8 +28,8 @@
   }
 
   public final class IconsKt {
-    method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
 }
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_current.txt b/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
@@ -28,8 +28,8 @@
   }
 
   public final class IconsKt {
-    method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
   }
 
 }
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt
index 168ba79..10dfb73 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt
@@ -28,8 +28,9 @@
   }
 
   public final class IconsKt {
-    method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    field @kotlin.PublishedApi internal static final float MaterialIconDimension = 24.0f;
   }
 
 }
diff --git a/ui/ui-material/icons/core/api/restricted_current.txt b/ui/ui-material/icons/core/api/restricted_current.txt
index 168ba79..10dfb73 100644
--- a/ui/ui-material/icons/core/api/restricted_current.txt
+++ b/ui/ui-material/icons/core/api/restricted_current.txt
@@ -28,8 +28,9 @@
   }
 
   public final class IconsKt {
-    method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
-    method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+    method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+    field @kotlin.PublishedApi internal static final float MaterialIconDimension = 24.0f;
   }
 
 }
diff --git a/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt b/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
index 6019d2e..b9cc777 100644
--- a/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
+++ b/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
@@ -89,21 +89,19 @@
 }
 
 /**
- * Utility delegate to construct a lazily initialized Material icon with default size information.
+ * Utility delegate to construct a Material icon with default size information.
  * This is used by generated icons, and should not be used manually.
  *
  * @param block builder lambda to add paths to this vector asset
  */
-fun lazyMaterialIcon(
+inline fun materialIcon(
     block: VectorAssetBuilder.() -> VectorAssetBuilder
-): Lazy<VectorAsset> = lazy(LazyThreadSafetyMode.NONE) {
-    VectorAssetBuilder(
-        defaultWidth = MaterialIconDimension.dp,
-        defaultHeight = MaterialIconDimension.dp,
-        viewportWidth = MaterialIconDimension,
-        viewportHeight = MaterialIconDimension
-    ).block().build()
-}
+): VectorAsset = VectorAssetBuilder(
+    defaultWidth = MaterialIconDimension.dp,
+    defaultHeight = MaterialIconDimension.dp,
+    viewportWidth = MaterialIconDimension,
+    viewportHeight = MaterialIconDimension
+).block().build()
 
 /**
  * Adds a vector path to this icon with sane Material defaults.
@@ -112,7 +110,7 @@
  * @param strokeAlpha stroke alpha for this path
  * @param pathBuilder builder lambda to add commands to this path
  */
-fun VectorAssetBuilder.materialPath(
+inline fun VectorAssetBuilder.materialPath(
     fillAlpha: Float = 1f,
     strokeAlpha: Float = 1f,
     pathBuilder: PathBuilder.() -> Unit
@@ -133,4 +131,5 @@
     )
 
 // All Material icons (currently) are 24dp by 24dp, with a viewport size of 24 by 24.
-private const val MaterialIconDimension = 24f
+@PublishedApi
+internal const val MaterialIconDimension = 24f
diff --git a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt
index c2c6d41..76b6f88 100644
--- a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt
+++ b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt
@@ -39,8 +39,7 @@
  * [MemberName]s used for icon generation.
  */
 object MemberNames {
-    val LazyMaterialIcon =
-        MemberName(PackageNames.MaterialIconsPackage.packageName, "lazyMaterialIcon")
+    val MaterialIcon = MemberName(PackageNames.MaterialIconsPackage.packageName, "materialIcon")
     val MaterialPath = MemberName(PackageNames.MaterialIconsPackage.packageName, "materialPath")
 
     val Group = MemberName(PackageNames.VectorPackage.packageName, "group")
diff --git a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt
index 292f47b..5b7d521 100644
--- a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt
+++ b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt
@@ -20,6 +20,8 @@
 import androidx.compose.material.icons.generator.vector.VectorNode
 import com.squareup.kotlinpoet.CodeBlock
 import com.squareup.kotlinpoet.FileSpec
+import com.squareup.kotlinpoet.FunSpec
+import com.squareup.kotlinpoet.KModifier
 import com.squareup.kotlinpoet.MemberName
 import com.squareup.kotlinpoet.PropertySpec
 import com.squareup.kotlinpoet.buildCodeBlock
@@ -51,26 +53,50 @@
         val iconsPackage = PackageNames.MaterialIconsPackage.packageName
         val themePackage = iconTheme.themePackageName
         val combinedPackageName = "$iconsPackage.$themePackage"
+        val backingProperty = backingProperty()
         return FileSpec.builder(
             packageName = combinedPackageName,
             fileName = iconName
         ).addProperty(
             PropertySpec.builder(name = iconName, type = ClassNames.VectorAsset)
                 .receiver(iconTheme.className)
-                .delegate(materialIconDelegate())
+                .getter(iconGetter(backingProperty))
                 .build()
+        ).addProperty(
+            backingProperty
         ).setIndent().build()
     }
 
     /**
-     * @return The delegate block containing the whole vector definition.
+     * @return the body of the getter for the icon property. This getter returns the backing
+     * property if it is not null, otherwise creates the icon and 'caches' it in the backing
+     * property, and then returns the backing property.
      */
-    private fun materialIconDelegate(): CodeBlock {
-        return buildCodeBlock {
-            addFunctionWithLambda(MemberNames.LazyMaterialIcon) {
-                vector.nodes.forEach { node -> addRecursively(node) }
-            }
-        }
+    private fun iconGetter(backingProperty: PropertySpec): FunSpec {
+        return FunSpec.getterBuilder()
+            .addStatement("if (%N != null) return %N!!", backingProperty, backingProperty)
+            .addCode(
+                buildCodeBlock {
+                    beginControlFlow("%N = %M", backingProperty, MemberNames.MaterialIcon)
+                    vector.nodes.forEach { node -> addRecursively(node) }
+                    endControlFlow()
+                }
+            )
+            .addStatement("return %N!!", backingProperty)
+            .build()
+    }
+
+    /**
+     * @return The private backing property that is used to cache the VectorAsset for a given
+     * icon once created.
+     */
+    private fun backingProperty(): PropertySpec {
+        val nullableVectorAsset = ClassNames.VectorAsset.copy(nullable = true)
+        return PropertySpec.builder(name = "icon", type = nullableVectorAsset)
+            .mutable()
+            .addModifiers(KModifier.PRIVATE)
+            .initializer("null")
+            .build()
     }
 }
 
diff --git a/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt b/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt
index c7b079f..a1dece4 100644
--- a/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt
+++ b/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt
@@ -65,27 +65,33 @@
     package androidx.compose.material.icons.filled
 
     import androidx.compose.material.icons.Icons
-    import androidx.compose.material.icons.lazyMaterialIcon
+    import androidx.compose.material.icons.materialIcon
     import androidx.compose.material.icons.materialPath
     import androidx.compose.ui.graphics.vector.VectorAsset
     import androidx.compose.ui.graphics.vector.group
 
-    val Icons.Filled.TestVector: VectorAsset by lazyMaterialIcon {
-        materialPath(fillAlpha = 0.8f) {
-            moveTo(20.0f, 10.0f)
-            lineToRelative(0.0f, 10.0f)
-            lineToRelative(-10.0f, 0.0f)
-            close()
-        }
-        group {
-            materialPath {
-                moveTo(0.0f, 10.0f)
-                lineToRelative(-10.0f, 0.0f)
-                close()
+    val Icons.Filled.TestVector: VectorAsset
+        get() {
+            if (icon != null) return icon!!
+            icon = materialIcon {
+                materialPath(fillAlpha = 0.8f) {
+                    moveTo(20.0f, 10.0f)
+                    lineToRelative(0.0f, 10.0f)
+                    lineToRelative(-10.0f, 0.0f)
+                    close()
+                }
+                group {
+                    materialPath {
+                        moveTo(0.0f, 10.0f)
+                        lineToRelative(-10.0f, 0.0f)
+                        close()
+                    }
+                }
             }
+            return icon!!
         }
-    }
 
+    private var icon: VectorAsset? = null
 
 """.trimIndent()
 
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt
index cad0db5..856b665 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt
@@ -26,7 +26,7 @@
 import androidx.compose.ui.graphics.vector.VectorPainter
 import androidx.compose.foundation.layout.preferredSize
 import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.lazyMaterialIcon
+import androidx.compose.material.icons.materialIcon
 import androidx.compose.material.icons.materialPath
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
@@ -61,117 +61,127 @@
  * file, which should appear in Studio sources by searching for the name of that icon.
  */
 
-val Icons.Filled.Sort: VectorAsset by lazyMaterialIcon {
-    materialPath {
-        moveTo(3.0f, 18.0f)
-        horizontalLineToRelative(6.0f)
-        verticalLineToRelative(-2.0f)
-        lineTo(3.0f, 16.0f)
-        verticalLineToRelative(2.0f)
-        close()
-        moveTo(3.0f, 6.0f)
-        verticalLineToRelative(2.0f)
-        horizontalLineToRelative(18.0f)
-        lineTo(21.0f, 6.0f)
-        lineTo(3.0f, 6.0f)
-        close()
-        moveTo(3.0f, 13.0f)
-        horizontalLineToRelative(12.0f)
-        verticalLineToRelative(-2.0f)
-        lineTo(3.0f, 11.0f)
-        verticalLineToRelative(2.0f)
-        close()
+val Icons.Filled.Sort: VectorAsset by lazy {
+    materialIcon {
+        materialPath {
+            moveTo(3.0f, 18.0f)
+            horizontalLineToRelative(6.0f)
+            verticalLineToRelative(-2.0f)
+            lineTo(3.0f, 16.0f)
+            verticalLineToRelative(2.0f)
+            close()
+            moveTo(3.0f, 6.0f)
+            verticalLineToRelative(2.0f)
+            horizontalLineToRelative(18.0f)
+            lineTo(21.0f, 6.0f)
+            lineTo(3.0f, 6.0f)
+            close()
+            moveTo(3.0f, 13.0f)
+            horizontalLineToRelative(12.0f)
+            verticalLineToRelative(-2.0f)
+            lineTo(3.0f, 11.0f)
+            verticalLineToRelative(2.0f)
+            close()
+        }
     }
 }
 
-val Icons.Filled.ArrowForwardIos: VectorAsset by lazyMaterialIcon {
-    materialPath {
-        moveTo(5.88f, 4.12f)
-        lineTo(13.76f, 12.0f)
-        lineToRelative(-7.88f, 7.88f)
-        lineTo(8.0f, 22.0f)
-        lineToRelative(10.0f, -10.0f)
-        lineTo(8.0f, 2.0f)
-        close()
+val Icons.Filled.ArrowForwardIos: VectorAsset by lazy {
+    materialIcon {
+        materialPath {
+            moveTo(5.88f, 4.12f)
+            lineTo(13.76f, 12.0f)
+            lineToRelative(-7.88f, 7.88f)
+            lineTo(8.0f, 22.0f)
+            lineToRelative(10.0f, -10.0f)
+            lineTo(8.0f, 2.0f)
+            close()
+        }
     }
 }
 
-val Icons.Filled.AttachMoney: VectorAsset by lazyMaterialIcon {
-    materialPath {
-        moveTo(11.8f, 10.9f)
-        curveToRelative(-2.27f, -0.59f, -3.0f, -1.2f, -3.0f, -2.15f)
-        curveToRelative(0.0f, -1.09f, 1.01f, -1.85f, 2.7f, -1.85f)
-        curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
-        horizontalLineToRelative(2.21f)
-        curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
-        verticalLineTo(3.0f)
-        horizontalLineToRelative(-3.0f)
-        verticalLineToRelative(2.16f)
-        curveToRelative(-1.94f, 0.42f, -3.5f, 1.68f, -3.5f, 3.61f)
-        curveToRelative(0.0f, 2.31f, 1.91f, 3.46f, 4.7f, 4.13f)
-        curveToRelative(2.5f, 0.6f, 3.0f, 1.48f, 3.0f, 2.41f)
-        curveToRelative(0.0f, 0.69f, -0.49f, 1.79f, -2.7f, 1.79f)
-        curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
-        horizontalLineToRelative(-2.2f)
-        curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
-        verticalLineTo(21.0f)
-        horizontalLineToRelative(3.0f)
-        verticalLineToRelative(-2.15f)
-        curveToRelative(1.95f, -0.37f, 3.5f, -1.5f, 3.5f, -3.55f)
-        curveToRelative(0.0f, -2.84f, -2.43f, -3.81f, -4.7f, -4.4f)
-        close()
+val Icons.Filled.AttachMoney: VectorAsset by lazy {
+    materialIcon {
+        materialPath {
+            moveTo(11.8f, 10.9f)
+            curveToRelative(-2.27f, -0.59f, -3.0f, -1.2f, -3.0f, -2.15f)
+            curveToRelative(0.0f, -1.09f, 1.01f, -1.85f, 2.7f, -1.85f)
+            curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
+            horizontalLineToRelative(2.21f)
+            curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
+            verticalLineTo(3.0f)
+            horizontalLineToRelative(-3.0f)
+            verticalLineToRelative(2.16f)
+            curveToRelative(-1.94f, 0.42f, -3.5f, 1.68f, -3.5f, 3.61f)
+            curveToRelative(0.0f, 2.31f, 1.91f, 3.46f, 4.7f, 4.13f)
+            curveToRelative(2.5f, 0.6f, 3.0f, 1.48f, 3.0f, 2.41f)
+            curveToRelative(0.0f, 0.69f, -0.49f, 1.79f, -2.7f, 1.79f)
+            curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
+            horizontalLineToRelative(-2.2f)
+            curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
+            verticalLineTo(21.0f)
+            horizontalLineToRelative(3.0f)
+            verticalLineToRelative(-2.15f)
+            curveToRelative(1.95f, -0.37f, 3.5f, -1.5f, 3.5f, -3.55f)
+            curveToRelative(0.0f, -2.84f, -2.43f, -3.81f, -4.7f, -4.4f)
+            close()
+        }
     }
 }
 
-val Icons.Filled.MoneyOff: VectorAsset by lazyMaterialIcon {
-    materialPath {
-        moveTo(12.5f, 6.9f)
-        curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
-        horizontalLineToRelative(2.21f)
-        curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
-        verticalLineTo(3.0f)
-        horizontalLineToRelative(-3.0f)
-        verticalLineToRelative(2.16f)
-        curveToRelative(-0.53f, 0.12f, -1.03f, 0.3f, -1.48f, 0.54f)
-        lineToRelative(1.47f, 1.47f)
-        curveToRelative(0.41f, -0.17f, 0.91f, -0.27f, 1.51f, -0.27f)
-        close()
-        moveTo(5.33f, 4.06f)
-        lineTo(4.06f, 5.33f)
-        lineTo(7.5f, 8.77f)
-        curveToRelative(0.0f, 2.08f, 1.56f, 3.21f, 3.91f, 3.91f)
-        lineToRelative(3.51f, 3.51f)
-        curveToRelative(-0.34f, 0.48f, -1.05f, 0.91f, -2.42f, 0.91f)
-        curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
-        horizontalLineToRelative(-2.2f)
-        curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
-        verticalLineTo(21.0f)
-        horizontalLineToRelative(3.0f)
-        verticalLineToRelative(-2.15f)
-        curveToRelative(0.96f, -0.18f, 1.82f, -0.55f, 2.45f, -1.12f)
-        lineToRelative(2.22f, 2.22f)
-        lineToRelative(1.27f, -1.27f)
-        lineTo(5.33f, 4.06f)
-        close()
+val Icons.Filled.MoneyOff: VectorAsset by lazy {
+    materialIcon {
+        materialPath {
+            moveTo(12.5f, 6.9f)
+            curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
+            horizontalLineToRelative(2.21f)
+            curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
+            verticalLineTo(3.0f)
+            horizontalLineToRelative(-3.0f)
+            verticalLineToRelative(2.16f)
+            curveToRelative(-0.53f, 0.12f, -1.03f, 0.3f, -1.48f, 0.54f)
+            lineToRelative(1.47f, 1.47f)
+            curveToRelative(0.41f, -0.17f, 0.91f, -0.27f, 1.51f, -0.27f)
+            close()
+            moveTo(5.33f, 4.06f)
+            lineTo(4.06f, 5.33f)
+            lineTo(7.5f, 8.77f)
+            curveToRelative(0.0f, 2.08f, 1.56f, 3.21f, 3.91f, 3.91f)
+            lineToRelative(3.51f, 3.51f)
+            curveToRelative(-0.34f, 0.48f, -1.05f, 0.91f, -2.42f, 0.91f)
+            curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
+            horizontalLineToRelative(-2.2f)
+            curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
+            verticalLineTo(21.0f)
+            horizontalLineToRelative(3.0f)
+            verticalLineToRelative(-2.15f)
+            curveToRelative(0.96f, -0.18f, 1.82f, -0.55f, 2.45f, -1.12f)
+            lineToRelative(2.22f, 2.22f)
+            lineToRelative(1.27f, -1.27f)
+            lineTo(5.33f, 4.06f)
+            close()
+        }
     }
 }
 
-val Icons.Filled.PieChart: VectorAsset by lazyMaterialIcon {
-    materialPath {
-        moveTo(11.0f, 2.0f)
-        verticalLineToRelative(20.0f)
-        curveToRelative(-5.07f, -0.5f, -9.0f, -4.79f, -9.0f, -10.0f)
-        reflectiveCurveToRelative(3.93f, -9.5f, 9.0f, -10.0f)
-        close()
-        moveTo(13.03f, 2.0f)
-        verticalLineToRelative(8.99f)
-        lineTo(22.0f, 10.99f)
-        curveToRelative(-0.47f, -4.74f, -4.24f, -8.52f, -8.97f, -8.99f)
-        close()
-        moveTo(13.03f, 13.01f)
-        lineTo(13.03f, 22.0f)
-        curveToRelative(4.74f, -0.47f, 8.5f, -4.25f, 8.97f, -8.99f)
-        horizontalLineToRelative(-8.97f)
-        close()
+val Icons.Filled.PieChart: VectorAsset by lazy {
+    materialIcon {
+        materialPath {
+            moveTo(11.0f, 2.0f)
+            verticalLineToRelative(20.0f)
+            curveToRelative(-5.07f, -0.5f, -9.0f, -4.79f, -9.0f, -10.0f)
+            reflectiveCurveToRelative(3.93f, -9.5f, 9.0f, -10.0f)
+            close()
+            moveTo(13.03f, 2.0f)
+            verticalLineToRelative(8.99f)
+            lineTo(22.0f, 10.99f)
+            curveToRelative(-0.47f, -4.74f, -4.24f, -8.52f, -8.97f, -8.99f)
+            close()
+            moveTo(13.03f, 13.01f)
+            lineTo(13.03f, 22.0f)
+            curveToRelative(4.74f, -0.47f, 8.5f, -4.25f, 8.97f, -8.99f)
+            horizontalLineToRelative(-8.97f)
+            close()
+        }
     }
 }