Rename MiddlemanExpander to ArtifactExpander, and refactor it to yield ArtifactFiles.

--
MOS_MIGRATED_REVID=114166208
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
index 723c9fb..8bceb9a 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
@@ -19,6 +19,7 @@
 import com.google.common.base.Functions;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Iterables;
+import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander;
 import com.google.devtools.build.lib.util.Preconditions;
 import com.google.devtools.build.lib.vfs.PathFragment;
 
@@ -34,11 +35,11 @@
   }
 
   @VisibleForTesting
-  public static Artifact.MiddlemanExpander actionGraphMiddlemanExpander(
+  public static ArtifactExpander actionGraphArtifactExpander(
       final ActionGraph actionGraph) {
-    return new Artifact.MiddlemanExpander() {
+    return new ArtifactExpander() {
       @Override
-      public void expand(Artifact mm, Collection<? super Artifact> output) {
+      public void expand(Artifact mm, Collection<? super ArtifactFile> output) {
         // Skyframe is stricter in that it checks that "mm" is a input of the action, because
         // it cannot expand arbitrary middlemen without access to a global action graph.
         // We could check this constraint here too, but it seems unnecessary. This code is
@@ -157,13 +158,27 @@
         });
   }
 
+  /** Returns an Collection of ArtifactFiles with the given parent and parent relative paths. */
+  public static Collection<ArtifactFile> asArtifactFiles(
+      final Artifact parent, Collection<? extends PathFragment> parentRelativePaths) {
+    Preconditions.checkState(parent.isTreeArtifact(),
+        "Given parent %s must be a TreeArtifact", parent);
+    return Collections2.transform(parentRelativePaths,
+        new Function<PathFragment, ArtifactFile>() {
+          @Override
+          public ArtifactFile apply(PathFragment pathFragment) {
+            return artifactFile(parent, pathFragment);
+          }
+        });
+  }
+
   /**
    * Expands middleman artifacts in a sequence of {@link ActionInput}s.
    *
    * <p>Non-middleman artifacts are returned untouched.
    */
-  public static List<ActionInput> expandMiddlemen(Iterable<? extends ActionInput> inputs,
-      Artifact.MiddlemanExpander middlemanExpander) {
+  public static List<ActionInput> expandArtifacts(Iterable<? extends ActionInput> inputs,
+      ArtifactExpander artifactExpander) {
 
     List<ActionInput> result = new ArrayList<>();
     List<Artifact> containedArtifacts = new ArrayList<>();
@@ -174,7 +189,7 @@
       }
       containedArtifacts.add((Artifact) input);
     }
-    Artifact.addExpandedArtifacts(containedArtifacts, result, middlemanExpander);
+    Artifact.addExpandedArtifacts(containedArtifacts, result, artifactExpander);
     return result;
   }