Now that SkyKey is an interface, accept Iterable<? extends SkyKey>

A subsequent CL makes TargetPatternKey implement SkyKey, and it's much nicer
if I can pass lists of TargetPatternKey to the various Skyframe APIs.

PiperOrigin-RevId: 162359843
diff --git a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java
index 7ddd11b..7c5deab 100644
--- a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java
@@ -105,7 +105,7 @@
           E4 extends Exception,
           E5 extends Exception>
       Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValueOrExceptions(
-          Iterable<SkyKey> depKeys,
+          Iterable<? extends SkyKey> depKeys,
           final Class<E1> exceptionClass1,
           final Class<E2> exceptionClass2,
           final Class<E3> exceptionClass3,
@@ -169,7 +169,7 @@
 
   /** Implementations should set {@link #valuesMissing} as necessary. */
   protected abstract Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions(
-      Iterable<SkyKey> depKeys) throws InterruptedException;
+      Iterable<? extends SkyKey> depKeys) throws InterruptedException;
 
   @Override
   @Nullable
@@ -257,7 +257,7 @@
 
   @Override
   public <E extends Exception> Map<SkyKey, ValueOrException<E>> getValuesOrThrow(
-      Iterable<SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException {
+      Iterable<? extends SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException {
     return Maps.transformValues(
         getValuesOrThrow(depKeys, exceptionClass, BottomException.class),
         makeSafeDowncastToVOEFunction(exceptionClass));
@@ -266,8 +266,8 @@
   @Override
   public <E1 extends Exception, E2 extends Exception>
       Map<SkyKey, ValueOrException2<E1, E2>> getValuesOrThrow(
-          Iterable<SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2)
-          throws InterruptedException {
+          Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2)
+              throws InterruptedException {
     return Maps.transformValues(
         getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, BottomException.class),
         makeSafeDowncastToVOE2Function(exceptionClass1, exceptionClass2));
@@ -276,11 +276,11 @@
   @Override
   public <E1 extends Exception, E2 extends Exception, E3 extends Exception>
       Map<SkyKey, ValueOrException3<E1, E2, E3>> getValuesOrThrow(
-          Iterable<SkyKey> depKeys,
+          Iterable<? extends SkyKey> depKeys,
           Class<E1> exceptionClass1,
           Class<E2> exceptionClass2,
           Class<E3> exceptionClass3)
-          throws InterruptedException {
+              throws InterruptedException {
     return Maps.transformValues(
         getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, exceptionClass3,
             BottomException.class),
@@ -290,12 +290,12 @@
   @Override
   public <E1 extends Exception, E2 extends Exception, E3 extends Exception, E4 extends Exception>
       Map<SkyKey, ValueOrException4<E1, E2, E3, E4>> getValuesOrThrow(
-          Iterable<SkyKey> depKeys,
+          Iterable<? extends SkyKey> depKeys,
           Class<E1> exceptionClass1,
           Class<E2> exceptionClass2,
           Class<E3> exceptionClass3,
           Class<E4> exceptionClass4)
-          throws InterruptedException {
+           throws InterruptedException {
     return Maps.transformValues(
         getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, exceptionClass3,
             exceptionClass4, BottomException.class),
@@ -311,13 +311,13 @@
           E4 extends Exception,
           E5 extends Exception>
       Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow(
-          Iterable<SkyKey> depKeys,
+          Iterable<? extends SkyKey> depKeys,
           Class<E1> exceptionClass1,
           Class<E2> exceptionClass2,
           Class<E3> exceptionClass3,
           Class<E4> exceptionClass4,
           Class<E5> exceptionClass5)
-          throws InterruptedException {
+              throws InterruptedException {
     Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> result =
         getValueOrExceptions(
             depKeys,
diff --git a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java
index ec6ccbf..78c2479 100644
--- a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java
@@ -26,8 +26,9 @@
    * of a {@link Version} value.
    */
   <T extends SkyValue> EvaluationResult<T> evaluate(
-      Iterable<SkyKey> roots, boolean keepGoing, int numThreads, ExtendedEventHandler reporter)
-      throws InterruptedException;
+      Iterable<? extends SkyKey> roots, boolean keepGoing, int numThreads,
+      ExtendedEventHandler reporter)
+          throws InterruptedException;
 
   /**
    * Retrieve metadata about the computation over the given roots. Data returned is specific to the
diff --git a/src/main/java/com/google/devtools/build/skyframe/Evaluator.java b/src/main/java/com/google/devtools/build/skyframe/Evaluator.java
index 56388da..905e0f6 100644
--- a/src/main/java/com/google/devtools/build/skyframe/Evaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/Evaluator.java
@@ -30,14 +30,14 @@
      * @param keepGoing whether {@link #eval} should continue if building a {link Value} fails.
      *                  Otherwise, we throw an exception on failure.
      */
-    Evaluator create(ProcessableGraph graph, long graphVersion, EventHandler reporter,
-        boolean keepGoing);
+    Evaluator create(
+        ProcessableGraph graph, long graphVersion, EventHandler reporter, boolean keepGoing);
   }
 
   /**
    * Evaluates a set of values. Returns an {@link EvaluationResult}. All elements of skyKeys must
    * be keys for Values of subtype T.
    */
-  <T extends SkyValue> EvaluationResult<T> eval(Iterable<SkyKey> skyKeys)
+  <T extends SkyValue> EvaluationResult<T> eval(Iterable<? extends SkyKey> skyKeys)
       throws InterruptedException;
 }
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
index 267ae78..e8c7d35 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
@@ -28,7 +28,7 @@
 
   @Override
   Map<SkyKey, ? extends NodeEntry> getBatch(
-      @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys);
+      @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys);
 
   /**
    * Returns a read-only live view of the nodes in the graph. All node are included. Dirty values
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
index b9ca140..05029be 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
@@ -58,7 +58,8 @@
   }
 
   @Override
-  public Map<SkyKey, NodeEntry> getBatch(SkyKey requestor, Reason reason, Iterable<SkyKey> keys) {
+  public Map<SkyKey, NodeEntry> getBatch(
+      SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) {
     // Use a HashMap, not an ImmutableMap.Builder, because we have not yet deduplicated these keys
     // and ImmutableMap.Builder does not tolerate duplicates. The map will be thrown away shortly.
     HashMap<SkyKey, NodeEntry> result = new HashMap<>();
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
index 504de3a..1750263 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
@@ -137,7 +137,7 @@
 
   @Override
   public <T extends SkyValue> EvaluationResult<T> evaluate(
-      Iterable<SkyKey> roots,
+      Iterable<? extends SkyKey> roots,
       Version version,
       boolean keepGoing,
       int numThreads,
diff --git a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
index 568e08f..2fe92fa 100644
--- a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
@@ -46,7 +46,7 @@
    * missing.
    */
   <T extends SkyValue> EvaluationResult<T> evaluate(
-      Iterable<SkyKey> roots,
+      Iterable<? extends SkyKey> roots,
       Version version,
       boolean keepGoing,
       int numThreads,
diff --git a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
index aac9277..a47a579 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
@@ -690,7 +690,7 @@
 
   @Override
   @ThreadCompatible
-  public <T extends SkyValue> EvaluationResult<T> eval(Iterable<SkyKey> skyKeys)
+  public <T extends SkyValue> EvaluationResult<T> eval(Iterable<? extends SkyKey> skyKeys)
       throws InterruptedException {
     ImmutableSet<SkyKey> skyKeySet = ImmutableSet.copyOf(skyKeys);
 
diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
index 07f8faf..26422dd 100644
--- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
@@ -46,7 +46,8 @@
    * @param reason the reason the nodes are being requested.
    */
   Map<SkyKey, ? extends NodeEntry> getBatch(
-      @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) throws InterruptedException;
+      @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys)
+          throws InterruptedException;
 
   /**
    * Examines all the given keys. Returns an iterable of keys whose corresponding nodes are
diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java
index 684db93..dace26e 100644
--- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java
@@ -61,7 +61,7 @@
 
   @Override
   protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions(
-      Iterable<SkyKey> depKeys) throws InterruptedException {
+      Iterable<? extends SkyKey> depKeys) throws InterruptedException {
     Map<SkyKey, ? extends NodeEntry> resultMap =
         queryableGraph.getBatch(null, Reason.DEP_REQUESTED, depKeys);
     // resultMap will be smaller than what we actually return if some of depKeys were not found in
diff --git a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
index 7f4c9fe..988412b 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
@@ -32,8 +32,9 @@
 
   @Override
   public <T extends SkyValue> EvaluationResult<T> evaluate(
-      Iterable<SkyKey> roots, boolean keepGoing, int numThreads, ExtendedEventHandler reporter)
-      throws InterruptedException {
+      Iterable<? extends SkyKey> roots, boolean keepGoing, int numThreads,
+      ExtendedEventHandler reporter)
+          throws InterruptedException {
     try {
       return memoizingEvaluator.evaluate(roots, curVersion, keepGoing, numThreads, reporter);
     } finally {
diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
index ee1d93c..66e9408 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
@@ -210,29 +210,30 @@
      * already evaluated with an error in the specified set of {@link Exception} types.
      */
     <E extends Exception> Map<SkyKey, ValueOrException<E>> getValuesOrThrow(
-        Iterable<SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException;
+        Iterable<? extends SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException;
 
     <E1 extends Exception, E2 extends Exception>
         Map<SkyKey, ValueOrException2<E1, E2>> getValuesOrThrow(
-            Iterable<SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2)
-            throws InterruptedException;
+            Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1,
+            Class<E2> exceptionClass2)
+                throws InterruptedException;
 
     <E1 extends Exception, E2 extends Exception, E3 extends Exception>
         Map<SkyKey, ValueOrException3<E1, E2, E3>> getValuesOrThrow(
-            Iterable<SkyKey> depKeys,
+            Iterable<? extends SkyKey> depKeys,
             Class<E1> exceptionClass1,
             Class<E2> exceptionClass2,
             Class<E3> exceptionClass3)
-            throws InterruptedException;
+                throws InterruptedException;
 
     <E1 extends Exception, E2 extends Exception, E3 extends Exception, E4 extends Exception>
         Map<SkyKey, ValueOrException4<E1, E2, E3, E4>> getValuesOrThrow(
-            Iterable<SkyKey> depKeys,
+            Iterable<? extends SkyKey> depKeys,
             Class<E1> exceptionClass1,
             Class<E2> exceptionClass2,
             Class<E3> exceptionClass3,
             Class<E4> exceptionClass4)
-            throws InterruptedException;
+                throws InterruptedException;
 
     <
             E1 extends Exception,
@@ -241,13 +242,13 @@
             E4 extends Exception,
             E5 extends Exception>
         Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow(
-            Iterable<SkyKey> depKeys,
+            Iterable<? extends SkyKey> depKeys,
             Class<E1> exceptionClass1,
             Class<E2> exceptionClass2,
             Class<E3> exceptionClass3,
             Class<E4> exceptionClass4,
             Class<E5> exceptionClass5)
-            throws InterruptedException;
+                throws InterruptedException;
 
     /**
      * Returns whether there was a previous getValue[s][OrThrow] that indicated a missing
diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
index fb51fdd..8735f34 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
@@ -270,7 +270,7 @@
     this.errorInfo = Preconditions.checkNotNull(errorInfo, skyKey);
   }
 
-  private Map<SkyKey, SkyValue> getValuesMaybeFromError(Iterable<SkyKey> keys)
+  private Map<SkyKey, SkyValue> getValuesMaybeFromError(Iterable<? extends SkyKey> keys)
       throws InterruptedException {
     // Use a HashMap, not an ImmutableMap.Builder, because we have not yet deduplicated these keys
     // and ImmutableMap.Builder does not tolerate duplicates.  The map will be thrown away
@@ -341,7 +341,7 @@
 
   @Override
   protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions(
-      Iterable<SkyKey> depKeys) throws InterruptedException {
+      Iterable<? extends SkyKey> depKeys) throws InterruptedException {
     checkActive();
     Map<SkyKey, SkyValue> values = getValuesMaybeFromError(depKeys);
     for (Map.Entry<SkyKey, SkyValue> depEntry : values.entrySet()) {
@@ -449,13 +449,13 @@
           E4 extends Exception,
           E5 extends Exception>
       Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow(
-          Iterable<SkyKey> depKeys,
+          Iterable<? extends SkyKey> depKeys,
           Class<E1> exceptionClass1,
           Class<E2> exceptionClass2,
           Class<E3> exceptionClass3,
           Class<E4> exceptionClass4,
           Class<E5> exceptionClass5)
-          throws InterruptedException {
+              throws InterruptedException {
     newlyRequestedDeps.startGroup();
     Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> result =
         super.getValuesOrThrow(