Inline and clean up call sites to DexEncodedField.builder

Change-Id: Idfc7c0c621baf451ce2202effe41fedeeae0a754
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java
index be12797..9336265 100644
--- a/src/main/java/com/android/tools/r8/dex/DexParser.java
+++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -651,8 +651,13 @@
         }
       }
       fields[i] =
-          DexEncodedField.create(
-              field, accessFlags, fieldTypeSignature, fieldAnnotations, staticValue);
+          DexEncodedField.builder()
+              .setField(field)
+              .setAccessFlags(accessFlags)
+              .setGenericSignature(fieldTypeSignature)
+              .setAnnotations(fieldAnnotations)
+              .setStaticValue(staticValue)
+              .build();
     }
     return fields;
   }
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
index c0e7511..c89d8ed 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
@@ -32,8 +32,6 @@
 public class DexEncodedField extends DexEncodedMember<DexEncodedField, DexField>
     implements StructuralItem<DexEncodedField> {
 
-  public static final boolean NOT_DEPRECATED = false;
-  public static final DexValue NO_STATIC_VALUE = null;
   public static final DexEncodedField[] EMPTY_ARRAY = {};
 
   public final FieldAccessFlags accessFlags;
@@ -354,87 +352,13 @@
     return new Builder(true);
   }
 
-  public static DexEncodedField create(DexField field, FieldAccessFlags accessFlags) {
-    return builder().setField(field).setAccessFlags(accessFlags).build();
-  }
-
-  public static DexEncodedField create(
-      DexField field,
-      FieldAccessFlags accessFlags,
-      FieldTypeSignature genericSignature,
-      DexAnnotationSet annotations,
-      DexValue staticValue) {
-    return builder()
-        .setField(field)
-        .setAccessFlags(accessFlags)
-        .setGenericSignature(genericSignature)
-        .setAnnotations(annotations)
-        .setStaticValue(staticValue)
-        .build();
-  }
-
-  public static DexEncodedField create(
-      DexField field,
-      FieldAccessFlags accessFlags,
-      FieldTypeSignature genericSignature,
-      DexAnnotationSet annotations,
-      DexValue staticValue,
-      boolean deprecated) {
-    return builder()
-        .setField(field)
-        .setAccessFlags(accessFlags)
-        .setGenericSignature(genericSignature)
-        .setAnnotations(annotations)
-        .setStaticValue(staticValue)
-        .setDeprecated(deprecated)
-        .build();
-  }
-
-  public static DexEncodedField create(
-      DexField field,
-      FieldAccessFlags accessFlags,
-      FieldTypeSignature genericSignature,
-      DexAnnotationSet annotations,
-      DexValue staticValue,
-      boolean deprecated,
-      AndroidApiLevel apiLevel) {
-    return builder()
-        .setField(field)
-        .setAccessFlags(accessFlags)
-        .setGenericSignature(genericSignature)
-        .setAnnotations(annotations)
-        .setStaticValue(staticValue)
-        .setDeprecated(deprecated)
-        .setApiLevel(apiLevel)
-        .build();
-  }
-
-  public static DexEncodedField createSynthetic(
-      DexField field,
-      FieldAccessFlags accessFlags,
-      FieldTypeSignature genericSignature,
-      DexAnnotationSet annotations,
-      DexValue staticValue,
-      boolean deprecated,
-      AndroidApiLevel apiLevel) {
-    return syntheticBuilder()
-        .setField(field)
-        .setAccessFlags(accessFlags)
-        .setGenericSignature(genericSignature)
-        .setAnnotations(annotations)
-        .setStaticValue(staticValue)
-        .setDeprecated(deprecated)
-        .setApiLevel(apiLevel)
-        .build();
-  }
-
   public static class Builder {
 
     private DexField field;
     private DexAnnotationSet annotations = DexAnnotationSet.empty();
     private FieldAccessFlags accessFlags;
     private FieldTypeSignature genericSignature = FieldTypeSignature.noSignature();
-    private DexValue staticValue;
+    private DexValue staticValue = null;
     private AndroidApiLevel apiLevel = AndroidApiLevel.UNKNOWN;
     private FieldOptimizationInfo optimizationInfo = DefaultFieldOptimizationInfo.getInstance();
     private boolean deprecated;
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index c0e48dd..2164d54 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -668,13 +668,14 @@
             createAnnotationSet(annotations, parent.application.options);
         DexValue staticValue = flags.isStatic() ? getStaticValue(value, dexField.type) : null;
         DexEncodedField field =
-            DexEncodedField.create(
-                dexField,
-                flags,
-                fieldSignature,
-                annotationSet,
-                staticValue,
-                AsmUtils.isDeprecated(access));
+            DexEncodedField.builder()
+                .setField(dexField)
+                .setAccessFlags(flags)
+                .setGenericSignature(fieldSignature)
+                .setAnnotations(annotationSet)
+                .setStaticValue(staticValue)
+                .setDeprecated(AsmUtils.isDeprecated(access))
+                .build();
         if (flags.isStatic()) {
           parent.staticFields.add(field);
         } else {
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
index 99758bb..b1055ef 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
@@ -9,7 +9,6 @@
 
 import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexDefinition;
 import com.android.tools.r8.graph.DexEncodedField;
@@ -21,7 +20,6 @@
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.DexTypeList;
 import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
 import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.graph.ProgramMember;
 import com.android.tools.r8.graph.ProgramMethod;
@@ -213,16 +211,12 @@
     assert appView.hasLiveness();
     assert mode.isInitial();
 
-    boolean deprecated = false;
     DexEncodedField classIdField =
-        DexEncodedField.createSynthetic(
-            group.getClassIdField(),
-            FieldAccessFlags.createPublicFinalSynthetic(),
-            FieldTypeSignature.noSignature(),
-            DexAnnotationSet.empty(),
-            null,
-            deprecated,
-            minApiLevelIfEnabledOrUnknown(appView));
+        DexEncodedField.syntheticBuilder()
+            .setField(group.getClassIdField())
+            .setAccessFlags(FieldAccessFlags.createPublicFinalSynthetic())
+            .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+            .build();
 
     // For the $r8$classId synthesized fields, we try to over-approximate the set of values it may
     // have. For example, for a merge group of size 4, we may compute the set {0, 2, 3}, if the
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
index 7675b93..c7f5ec8 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.errors.Unimplemented;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
 import com.android.tools.r8.graph.DexEncodedField;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexField;
@@ -26,7 +25,6 @@
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.DexValue.DexValueNull;
 import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
 import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.graph.MethodResolutionResult;
 import com.android.tools.r8.graph.MethodResolutionResult.SingleResolutionResult;
@@ -223,17 +221,13 @@
     int fieldCount = fieldTypes.length;
     List<DexEncodedField> fields = new ArrayList<>(fieldCount);
     for (int i = 0; i < fieldCount; i++) {
-      boolean deprecated = false;
       fields.add(
-          DexEncodedField.createSynthetic(
-              getCaptureField(i),
-              FieldAccessFlags.createPublicFinalSynthetic(),
-              FieldTypeSignature.noSignature(),
-              DexAnnotationSet.empty(),
-              null,
-              deprecated,
+          DexEncodedField.syntheticBuilder()
+              .setField(getCaptureField(i))
+              .setAccessFlags(FieldAccessFlags.createPublicFinalSynthetic())
               // The api level is computed when tracing.
-              AndroidApiLevel.minApiLevelIfEnabledOrUnknown(appView)));
+              .setApiLevel(AndroidApiLevel.UNKNOWN)
+              .build());
     }
     builder.setInstanceFields(fields);
   }
@@ -243,22 +237,20 @@
     if (isStateless()) {
       // Create instance field for stateless lambda.
       assert this.lambdaField != null;
-      boolean deprecated = false;
       builder.setStaticFields(
           Collections.singletonList(
-              DexEncodedField.createSynthetic(
-                  this.lambdaField,
-                  FieldAccessFlags.fromSharedAccessFlags(
-                      Constants.ACC_PUBLIC
-                          | Constants.ACC_FINAL
-                          | Constants.ACC_SYNTHETIC
-                          | Constants.ACC_STATIC),
-                  FieldTypeSignature.noSignature(),
-                  DexAnnotationSet.empty(),
-                  DexValueNull.NULL,
-                  deprecated,
+              DexEncodedField.syntheticBuilder()
+                  .setField(this.lambdaField)
+                  .setAccessFlags(
+                      FieldAccessFlags.fromSharedAccessFlags(
+                          Constants.ACC_PUBLIC
+                              | Constants.ACC_FINAL
+                              | Constants.ACC_SYNTHETIC
+                              | Constants.ACC_STATIC))
+                  .setStaticValue(DexValueNull.NULL)
                   // The api level is computed when tracing.
-                  AndroidApiLevel.minApiLevelIfEnabledOrUnknown(appView))));
+                  .setApiLevel(AndroidApiLevel.UNKNOWN)
+                  .build()));
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
index 44b8f39..d1b1546 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
@@ -9,7 +9,6 @@
 import com.android.tools.r8.graph.CfCode;
 import com.android.tools.r8.graph.ClasspathOrLibraryClass;
 import com.android.tools.r8.graph.Code;
-import com.android.tools.r8.graph.DexAnnotationSet;
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexClassAndMethod;
 import com.android.tools.r8.graph.DexClasspathClass;
@@ -22,7 +21,6 @@
 import com.android.tools.r8.graph.DexProto;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
 import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaring;
 import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaringEventConsumer;
@@ -686,8 +684,10 @@
     // Field is package private to be accessible from convert methods without a getter.
     FieldAccessFlags fieldAccessFlags =
         FieldAccessFlags.fromCfAccessFlags(Constants.ACC_FINAL | Constants.ACC_SYNTHETIC);
-    return DexEncodedField.create(
-        field, fieldAccessFlags, FieldTypeSignature.noSignature(), DexAnnotationSet.empty(), null);
+    return DexEncodedField.syntheticBuilder()
+        .setField(field)
+        .setAccessFlags(fieldAccessFlags)
+        .build();
   }
 
   // Program wrappers are harder to deal with than classpath wrapper because generating a method's
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
index 71bfd83..a2a2bf9 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
@@ -14,7 +14,6 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.CfCode;
 import com.android.tools.r8.graph.ClasspathOrLibraryClass;
-import com.android.tools.r8.graph.DexAnnotationSet;
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexClassAndMethod;
 import com.android.tools.r8.graph.DexClasspathClass;
@@ -28,7 +27,6 @@
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.DexValue.DexValueInt;
 import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
 import com.android.tools.r8.graph.GenericSignature.MethodTypeSignature;
 import com.android.tools.r8.graph.InvalidCode;
 import com.android.tools.r8.graph.MethodAccessFlags;
@@ -456,12 +454,12 @@
             dexItemFactory.intType,
             "$desugar$clinit",
             candidate -> iface.lookupField(candidate) == null);
-    return DexEncodedField.create(
-        clinitFieldReference,
-        FieldAccessFlags.builder().setPackagePrivate().setStatic().setSynthetic().build(),
-        FieldTypeSignature.noSignature(),
-        DexAnnotationSet.empty(),
-        DexValueInt.DEFAULT);
+    return DexEncodedField.syntheticBuilder()
+        .setField(clinitFieldReference)
+        .setAccessFlags(
+            FieldAccessFlags.builder().setPackagePrivate().setStatic().setSynthetic().build())
+        .setStaticValue(DexValueInt.DEFAULT)
+        .build();
   }
 
   private void createCompanionClassInitializer(
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
index 0b05bb2..a239ebb 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
@@ -22,7 +22,6 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.CfCode;
 import com.android.tools.r8.graph.ClassAccessFlags;
-import com.android.tools.r8.graph.DexAnnotationSet;
 import com.android.tools.r8.graph.DexEncodedField;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexItemFactory;
@@ -31,7 +30,6 @@
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
 import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.code.MemberType;
@@ -226,15 +224,13 @@
 
     private DexEncodedField createValuesField(DexType sharedUtilityClassType) {
       DexEncodedField valuesField =
-          DexEncodedField.createSynthetic(
-              dexItemFactory.createField(
-                  sharedUtilityClassType, dexItemFactory.intArrayType, "$VALUES"),
-              FieldAccessFlags.createPublicStaticFinalSynthetic(),
-              FieldTypeSignature.noSignature(),
-              DexAnnotationSet.empty(),
-              DexEncodedField.NO_STATIC_VALUE,
-              DexEncodedField.NOT_DEPRECATED,
-              minApiLevelIfEnabledOrUnknown(appView));
+          DexEncodedField.syntheticBuilder()
+              .setField(
+                  dexItemFactory.createField(
+                      sharedUtilityClassType, dexItemFactory.intArrayType, "$VALUES"))
+              .setAccessFlags(FieldAccessFlags.createPublicStaticFinalSynthetic())
+              .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+              .build();
       fieldAccessInfoCollectionModifierBuilder
           .recordFieldReadInUnknownContext(valuesField.getReference())
           .recordFieldWriteInUnknownContext(valuesField.getReference());
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
index d50999c..2c012f0 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
@@ -8,12 +8,10 @@
 
 import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
 import com.android.tools.r8.graph.DexEncodedField;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexLibraryClass;
 import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
 
 /**
  * This class synthesizes library fields that we rely on for modeling.
@@ -35,13 +33,12 @@
             DexEncodedField definition = enumClass.lookupField(field);
             if (definition == null) {
               enumClass.appendInstanceField(
-                  DexEncodedField.create(
-                      field,
-                      FieldAccessFlags.fromCfAccessFlags(
-                          Constants.ACC_PRIVATE | Constants.ACC_FINAL),
-                      FieldTypeSignature.noSignature(),
-                      DexAnnotationSet.empty(),
-                      null));
+                  DexEncodedField.syntheticBuilder()
+                      .setField(field)
+                      .setAccessFlags(
+                          FieldAccessFlags.fromCfAccessFlags(
+                              Constants.ACC_PRIVATE | Constants.ACC_FINAL))
+                      .build());
             }
           });
     }
diff --git a/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java b/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java
index 776b335..129acae 100644
--- a/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java
@@ -10,13 +10,11 @@
 import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
 import com.android.tools.r8.graph.DexEncodedField;
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
 import com.android.tools.r8.graph.InitClassLens;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Visibility;
@@ -82,16 +80,15 @@
                   | Constants.ACC_FINAL
                   | Constants.ACC_PUBLIC
                   | Constants.ACC_STATIC);
-      boolean deprecated = false;
       encodedClinitField =
-          DexEncodedField.createSynthetic(
-              appView.dexItemFactory().createField(clazz.type, clinitField.type, clinitField.name),
-              accessFlags,
-              FieldTypeSignature.noSignature(),
-              DexAnnotationSet.empty(),
-              null,
-              deprecated,
-              minApiLevelIfEnabledOrUnknown(appView));
+          DexEncodedField.syntheticBuilder()
+              .setField(
+                  appView
+                      .dexItemFactory()
+                      .createField(clazz.type, clinitField.type, clinitField.name))
+              .setAccessFlags(accessFlags)
+              .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+              .build();
       clazz.appendStaticField(encodedClinitField);
     }
     lensBuilder.map(type, encodedClinitField.getReference());