diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
index 8ddef2b..48baf2f 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
@@ -13,24 +13,19 @@
 
 public class CompilerSynthesizedMappingInformation extends ReferentialMappingInformation {
 
+  private static final CompilerSynthesizedMappingInformation INSTANCE =
+      new CompilerSynthesizedMappingInformation();
   public static final MapVersion SUPPORTED_VERSION = MapVersion.MAP_VERSION_1_0;
   public static final String ID = "com.android.tools.r8.synthesized";
 
-  public static class Builder {
-
-    public CompilerSynthesizedMappingInformation build() {
-      return new CompilerSynthesizedMappingInformation();
-    }
-  }
-
   public static boolean isSupported(MapVersion version) {
     return version.isGreaterThanOrEqualTo(SUPPORTED_VERSION);
   }
 
   private CompilerSynthesizedMappingInformation() {}
 
-  public static Builder builder() {
-    return new Builder();
+  public static CompilerSynthesizedMappingInformation getInstance() {
+    return INSTANCE;
   }
 
   @Override
@@ -70,7 +65,7 @@
       MapVersion version,
       Consumer<MappingInformation> onMappingInfo) {
     if (isSupported(version)) {
-      onMappingInfo.accept(builder().build());
+      onMappingInfo.accept(getInstance());
     }
   }
 }
diff --git a/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java b/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
index c0a65b6..07d684b 100644
--- a/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
+++ b/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
@@ -162,7 +162,7 @@
       if (syntheticItems.isSyntheticClass(clazz)) {
         getBuilder()
             .addMappingInformation(
-                CompilerSynthesizedMappingInformation.builder().build(), Unreachable::raise);
+                CompilerSynthesizedMappingInformation.getInstance(), Unreachable::raise);
       }
       return this;
     }
@@ -201,8 +201,7 @@
       if (method.getDefinition().isD8R8Synthesized()
           || (!mappedPositions.isEmpty()
               && mappedPositions.get(0).getPosition().isD8R8Synthesized())) {
-        methodSpecificMappingInformation.add(
-            CompilerSynthesizedMappingInformation.builder().build());
+        methodSpecificMappingInformation.add(CompilerSynthesizedMappingInformation.getInstance());
       }
 
       DexMethod residualMethod =
