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();
   }
 }
