diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java
index 91b428d..291f42a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java
@@ -39,6 +39,7 @@
 import com.google.devtools.build.lib.actions.ActionRewoundEvent;
 import com.google.devtools.build.lib.actions.AlreadyReportedActionExecutionException;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact;
 import com.google.devtools.build.lib.actions.ArtifactPathResolver;
 import com.google.devtools.build.lib.actions.DiscoveredInputsEvent;
 import com.google.devtools.build.lib.actions.FileArtifactValue;
@@ -1049,8 +1050,8 @@
       } else if (retrievedMetadata instanceof ActionExecutionValue) {
         inputData.putWithNoDepOwner(
             input,
-            ActionExecutionValue.createSimpleFileArtifactValue(
-                (Artifact.DerivedArtifact) input, (ActionExecutionValue) retrievedMetadata));
+            ((ActionExecutionValue) retrievedMetadata)
+                .getExistingFileArtifactValue((DerivedArtifact) input));
       } else if (retrievedMetadata instanceof MissingFileArtifactValue) {
         inputData.putWithNoDepOwner(input, FileArtifactValue.MISSING_FILE_MARKER);
       } else if (retrievedMetadata instanceof FileArtifactValue) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
index 1a2587e..7116a0a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
@@ -20,6 +20,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact;
 import com.google.devtools.build.lib.actions.Artifact.OwnerlessArtifactWrapper;
 import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact;
 import com.google.devtools.build.lib.actions.ArtifactOwner;
@@ -117,19 +118,22 @@
   }
 
   /**
-   * Create {@link FileArtifactValue} for artifact that must be non-middleman non-tree derived
-   * artifact.
+   * Retrieves a {@link FileArtifactValue} for a regular (non-middleman, non-tree) derived artifact.
+   *
+   * <p>The value for the given artifact must be present.
    */
-  static FileArtifactValue createSimpleFileArtifactValue(
-      Artifact.DerivedArtifact artifact, ActionExecutionValue actionValue) {
-    Preconditions.checkState(!artifact.isMiddlemanArtifact(), "%s %s", artifact, actionValue);
-    Preconditions.checkState(!artifact.isTreeArtifact(), "%s %s", artifact, actionValue);
+  FileArtifactValue getExistingFileArtifactValue(DerivedArtifact artifact) {
+    Preconditions.checkState(
+        !artifact.isMiddlemanArtifact() && !artifact.isTreeArtifact(),
+        "Cannot request %s from %s",
+        artifact,
+        this);
     return Preconditions.checkNotNull(
-        actionValue.getArtifactValue(artifact),
-        "%s %s %s",
+        getArtifactValue(artifact),
+        "Missing artifact %s (generating action key %s) in %s",
         artifact,
         artifact.getGeneratingActionKey(),
-        actionValue);
+        this);
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMapHelper.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMapHelper.java
index 9e15389..9c7a570 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMapHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMapHelper.java
@@ -22,6 +22,8 @@
 import com.google.devtools.build.lib.actions.ActionLookupValue;
 import com.google.devtools.build.lib.actions.ActionLookupValue.ActionLookupKey;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact;
+import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
 import com.google.devtools.build.lib.actions.FileArtifactValue;
 import com.google.devtools.build.lib.actions.FilesetOutputSymlink;
 import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
@@ -51,7 +53,7 @@
         inputMap.put(artifact, entry.second, /*depOwner=*/ key);
         if (artifact.isFileset()) {
           ImmutableList<FilesetOutputSymlink> expandedFileset =
-              getFilesets(env, (Artifact.SpecialArtifact) artifact);
+              getFilesets(env, (SpecialArtifact) artifact);
           if (expandedFileset != null) {
             filesetsInsideRunfiles.put(artifact, expandedFileset);
           }
@@ -87,11 +89,10 @@
     } else if (value instanceof ActionExecutionValue) {
       inputMap.put(
           key,
-          ActionExecutionValue.createSimpleFileArtifactValue(
-              (Artifact.DerivedArtifact) key, (ActionExecutionValue) value),
+          ((ActionExecutionValue) value).getExistingFileArtifactValue((DerivedArtifact) key),
           key);
       if (key.isFileset()) {
-        topLevelFilesets.put(key, getFilesets(env, (Artifact.SpecialArtifact) key));
+        topLevelFilesets.put(key, getFilesets(env, (SpecialArtifact) key));
       }
     } else {
       Preconditions.checkState(value instanceof FileArtifactValue);
@@ -100,7 +101,7 @@
   }
 
   static ImmutableList<FilesetOutputSymlink> getFilesets(
-      Environment env, Artifact.SpecialArtifact actionInput) throws InterruptedException {
+      Environment env, SpecialArtifact actionInput) throws InterruptedException {
     Preconditions.checkState(actionInput.isFileset(), actionInput);
     ActionLookupData generatingActionKey = actionInput.getGeneratingActionKey();
     ActionLookupKey filesetActionLookupKey = generatingActionKey.getActionLookupKey();
@@ -113,8 +114,8 @@
     ActionLookupData filesetActionKey;
 
     if (generatingAction instanceof SymlinkAction) {
-      Artifact.DerivedArtifact outputManifest =
-          (Artifact.DerivedArtifact) generatingAction.getInputs().getSingleton();
+      DerivedArtifact outputManifest =
+          (DerivedArtifact) generatingAction.getInputs().getSingleton();
       ActionLookupData manifestGeneratingKey = outputManifest.getGeneratingActionKey();
       Preconditions.checkState(
           manifestGeneratingKey.getActionLookupKey().equals(filesetActionLookupKey),
@@ -125,8 +126,8 @@
           manifestGeneratingKey);
       ActionAnalysisMetadata symlinkTreeAction =
           filesetActionLookupValue.getAction(manifestGeneratingKey.getActionIndex());
-      Artifact.DerivedArtifact inputManifest =
-          (Artifact.DerivedArtifact) symlinkTreeAction.getInputs().getSingleton();
+      DerivedArtifact inputManifest =
+          (DerivedArtifact) symlinkTreeAction.getInputs().getSingleton();
       ActionLookupData inputManifestGeneratingKey = inputManifest.getGeneratingActionKey();
       Preconditions.checkState(
           inputManifestGeneratingKey.getActionLookupKey().equals(filesetActionLookupKey),
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
index c582e7b..e2c4621 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
@@ -216,8 +216,7 @@
 
       for (TreeFileArtifact treeFileArtifact : treeFileArtifacts) {
         FileArtifactValue value =
-            ActionExecutionValue.createSimpleFileArtifactValue(
-                treeFileArtifact, actionExecutionValue);
+            actionExecutionValue.getExistingFileArtifactValue(treeFileArtifact);
         if (FileArtifactValue.OMITTED_FILE_MARKER.equals(value)) {
           omitted = true;
         } else {
@@ -333,8 +332,8 @@
         fileInputsBuilder.add(
             Pair.of(
                 input,
-                ActionExecutionValue.createSimpleFileArtifactValue(
-                    (DerivedArtifact) input, (ActionExecutionValue) inputValue)));
+                ((ActionExecutionValue) inputValue)
+                    .getExistingFileArtifactValue((DerivedArtifact) input)));
       } else if (inputValue instanceof TreeArtifactValue) {
         directoryInputsBuilder.add(Pair.of(input, (TreeArtifactValue) inputValue));
       } else {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java
index d636b21..f260515 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java
@@ -22,6 +22,7 @@
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact;
 import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact;
 import com.google.devtools.build.lib.actions.FileArtifactValue;
 import com.google.devtools.build.lib.actions.FileStateType;
@@ -278,9 +279,8 @@
           fsVal = (HasDigest) value;
         } else if (value instanceof ActionExecutionValue) {
           fsVal =
-              Preconditions.checkNotNull(
-                  ActionExecutionValue.createSimpleFileArtifactValue(
-                      (Artifact.DerivedArtifact) artifact, (ActionExecutionValue) value));
+              ((ActionExecutionValue) value)
+                  .getExistingFileArtifactValue((DerivedArtifact) artifact);
         } else {
           return NON_EXISTENT_FILE_INFO;
         }
