Convert AttributeTransitionData to use a Builder.

PiperOrigin-RevId: 249057540
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index 1d86342..1027804 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -349,10 +349,13 @@
       if (toolchainContext != null && toolchainContext.executionPlatform() != null) {
         executionPlatformLabel = toolchainContext.executionPlatform().label();
       }
+      AttributeTransitionData attributeTransitionData =
+          AttributeTransitionData.builder()
+              .attributes(attributeMap)
+              .executionPlatform(executionPlatformLabel)
+              .build();
       ConfigurationTransition attributeTransition =
-          attribute
-              .getTransitionFactory()
-              .create(AttributeTransitionData.create(attributeMap, executionPlatformLabel));
+          attribute.getTransitionFactory().create(attributeTransitionData);
       partiallyResolvedDeps.put(
           entry.getKey(),
           PartiallyResolvedDependency.of(toLabel, attributeTransition, propagatingAspects.build()));
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index ca8da90..76e3b42 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -844,9 +844,10 @@
             attributeDefinition
                 .getTransitionFactory()
                 .create(
-                    AttributeTransitionData.create(
-                        ConfiguredAttributeMapper.of(rule, configConditions),
-                        getToolchainContext().executionPlatform().label()));
+                    AttributeTransitionData.builder()
+                        .attributes(ConfiguredAttributeMapper.of(rule, configConditions))
+                        .executionPlatform(getToolchainContext().executionPlatform().label())
+                        .build());
     BuildOptions fromOptions = getConfiguration().getOptions();
     List<BuildOptions> splitOptions = transition.split(fromOptions);
     List<ConfiguredTargetAndData> deps = getConfiguredTargetAndTargetDeps(attributeName);
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java b/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java
index 831585f..fd24a85 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java
@@ -34,14 +34,21 @@
   @Nullable
   public abstract Label executionPlatform();
 
-  /** Returns a new {@link AttributeTransitionData} instance. */
-  public static AttributeTransitionData create(AttributeMap attributes) {
-    return create(attributes, null);
+  /** Returns a new {@link Builder} for {@link AttributeTransitionData}. */
+  public static Builder builder() {
+    return new AutoValue_AttributeTransitionData.Builder();
   }
 
-  /** Returns a new {@link AttributeTransitionData} instance. */
-  public static AttributeTransitionData create(
-      AttributeMap attributes, @Nullable Label executionPlatform) {
-    return new AutoValue_AttributeTransitionData(attributes, executionPlatform);
+  /** Builder class for {@link AttributeTransitionData}. */
+  @AutoValue.Builder
+  public abstract static class Builder {
+    /** Sets the attributes. */
+    public abstract Builder attributes(AttributeMap attributes);
+
+    /** Sets the execution platform label. */
+    public abstract Builder executionPlatform(@Nullable Label executionPlatform);
+
+    /** Returns the new {@link AttributeTransitionData}. */
+    public abstract AttributeTransitionData build();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/ExecutionTransitionFactoryTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/ExecutionTransitionFactoryTest.java
index e183eba..b619c8f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/ExecutionTransitionFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/ExecutionTransitionFactoryTest.java
@@ -37,7 +37,10 @@
     ExecutionTransitionFactory execTransitionFactory = new ExecutionTransitionFactory();
     PatchTransition transition =
         execTransitionFactory.create(
-            AttributeTransitionData.create(FakeAttributeMapper.empty(), EXECUTION_PLATFORM));
+            AttributeTransitionData.builder()
+                .attributes(FakeAttributeMapper.empty())
+                .executionPlatform(EXECUTION_PLATFORM)
+                .build());
 
     assertThat(transition).isNotNull();
 
@@ -63,7 +66,10 @@
     // No execution platform available.
     PatchTransition transition =
         execTransitionFactory.create(
-            AttributeTransitionData.create(FakeAttributeMapper.empty(), null));
+            AttributeTransitionData.builder()
+                .attributes(FakeAttributeMapper.empty())
+                .executionPlatform(null)
+                .build());
 
     assertThat(transition).isNotNull();
 
diff --git a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
index e63edff..2bd90df 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
@@ -259,7 +259,8 @@
     assertThat(attr.getTransitionFactory().isSplit()).isTrue();
     ConfigurationTransition transition =
         attr.getTransitionFactory()
-            .create(AttributeTransitionData.create(FakeAttributeMapper.empty()));
+            .create(
+                AttributeTransitionData.builder().attributes(FakeAttributeMapper.empty()).build());
     assertThat(transition).isEqualTo(splitTransition);
   }
 
@@ -271,7 +272,8 @@
     assertThat(attr.getTransitionFactory().isSplit()).isTrue();
     ConfigurationTransition transition =
         attr.getTransitionFactory()
-            .create(AttributeTransitionData.create(FakeAttributeMapper.empty()));
+            .create(
+                AttributeTransitionData.builder().attributes(FakeAttributeMapper.empty()).build());
     assertThat(transition).isInstanceOf(TestSplitTransition.class);
   }