Add type assertion that TreeFileArtifact's parentTreeArtifact member is a
SpecialArtifact.

PiperOrigin-RevId: 184539696
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java
index bd8f78e..1699fc2 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java
@@ -178,7 +178,7 @@
 
   @Test
   public void testActionTreeArtifactOutput() throws Throwable {
-    Artifact artifact = createDerivedTreeArtifactWithAction("treeArtifact");
+    SpecialArtifact artifact = createDerivedTreeArtifactWithAction("treeArtifact");
     TreeFileArtifact treeFileArtifact1 = createFakeTreeFileArtifact(artifact, "child1", "hello1");
     TreeFileArtifact treeFileArtifact2 = createFakeTreeFileArtifact(artifact, "child2", "hello2");
 
@@ -192,13 +192,12 @@
   @Test
   public void testSpawnActionTemplate() throws Throwable {
     // artifact1 is a tree artifact generated by normal action.
-    Artifact artifact1 = createDerivedTreeArtifactWithAction("treeArtifact1");
+    SpecialArtifact artifact1 = createDerivedTreeArtifactWithAction("treeArtifact1");
     createFakeTreeFileArtifact(artifact1, "child1", "hello1");
     createFakeTreeFileArtifact(artifact1, "child2", "hello2");
 
-
     // artifact2 is a tree artifact generated by action template.
-    Artifact artifact2 = createDerivedTreeArtifactOnly("treeArtifact2");
+    SpecialArtifact artifact2 = createDerivedTreeArtifactOnly("treeArtifact2");
     TreeFileArtifact treeFileArtifact1 = createFakeTreeFileArtifact(artifact2, "child1", "hello1");
     TreeFileArtifact treeFileArtifact2 = createFakeTreeFileArtifact(artifact2, "child2", "hello2");
 
@@ -215,19 +214,19 @@
   @Test
   public void testConsecutiveSpawnActionTemplates() throws Throwable {
     // artifact1 is a tree artifact generated by normal action.
-    Artifact artifact1 = createDerivedTreeArtifactWithAction("treeArtifact1");
+    SpecialArtifact artifact1 = createDerivedTreeArtifactWithAction("treeArtifact1");
     createFakeTreeFileArtifact(artifact1, "child1", "hello1");
     createFakeTreeFileArtifact(artifact1, "child2", "hello2");
 
     // artifact2 is a tree artifact generated by action template.
-    Artifact artifact2 = createDerivedTreeArtifactOnly("treeArtifact2");
+    SpecialArtifact artifact2 = createDerivedTreeArtifactOnly("treeArtifact2");
     createFakeTreeFileArtifact(artifact2, "child1", "hello1");
     createFakeTreeFileArtifact(artifact2, "child2", "hello2");
     actions.add(
         ActionsTestUtil.createDummySpawnActionTemplate(artifact1, artifact2));
 
     // artifact3 is a tree artifact generated by action template.
-    Artifact artifact3 = createDerivedTreeArtifactOnly("treeArtifact3");
+    SpecialArtifact artifact3 = createDerivedTreeArtifactOnly("treeArtifact3");
     TreeFileArtifact treeFileArtifact1 = createFakeTreeFileArtifact(artifact3, "child1", "hello1");
     TreeFileArtifact treeFileArtifact2 = createFakeTreeFileArtifact(artifact3, "child2", "hello2");
     actions.add(
@@ -270,13 +269,13 @@
         fullPath, middlemanRoot, middlemanRoot.getExecPath().getRelative(path), ALL_OWNER);
   }
 
-  private Artifact createDerivedTreeArtifactWithAction(String path) {
-    Artifact treeArtifact = createDerivedTreeArtifactOnly(path);
+  private SpecialArtifact createDerivedTreeArtifactWithAction(String path) {
+    SpecialArtifact treeArtifact = createDerivedTreeArtifactOnly(path);
     actions.add(new DummyAction(ImmutableList.<Artifact>of(), treeArtifact));
     return treeArtifact;
   }
 
-  private Artifact createDerivedTreeArtifactOnly(String path) {
+  private SpecialArtifact createDerivedTreeArtifactOnly(String path) {
     PathFragment execPath = PathFragment.create("out").getRelative(path);
     Path fullPath = root.getRelative(execPath);
     return new SpecialArtifact(
@@ -287,8 +286,8 @@
         SpecialArtifactType.TREE);
   }
 
-  private TreeFileArtifact createFakeTreeFileArtifact(Artifact treeArtifact,
-      String parentRelativePath, String content) throws Exception {
+  private TreeFileArtifact createFakeTreeFileArtifact(
+      SpecialArtifact treeArtifact, String parentRelativePath, String content) throws Exception {
     TreeFileArtifact treeFileArtifact = ActionInputHelper.treeFileArtifact(
         treeArtifact, PathFragment.create(parentRelativePath));
     Path path = treeFileArtifact.getPath();
@@ -361,9 +360,9 @@
       try {
         if (output.isTreeArtifact()) {
           TreeFileArtifact treeFileArtifact1 = ActionInputHelper.treeFileArtifact(
-              output, PathFragment.create("child1"));
+              (SpecialArtifact) output, PathFragment.create("child1"));
           TreeFileArtifact treeFileArtifact2 = ActionInputHelper.treeFileArtifact(
-              output, PathFragment.create("child2"));
+              (SpecialArtifact) output, PathFragment.create("child2"));
           TreeArtifactValue treeArtifactValue = TreeArtifactValue.create(ImmutableMap.of(
               treeFileArtifact1, FileArtifactValue.create(treeFileArtifact1),
               treeFileArtifact2, FileArtifactValue.create(treeFileArtifact2)));