Clean up AllPathsFunction and get rid of getFwdDeps(Target) and getReverseDeps(Target) from the QueryEnvironment interface, since they're no longer needed by any query functions, and also WalkableGraph#get{Direct,Reverse}Deps(SkyKey).

--
MOS_MIGRATED_REVID=96361760
diff --git a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
index e7992f4..a5c6d1d 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
@@ -195,29 +195,19 @@
   }
 
   @Override
-  public Collection<Target> getFwdDeps(Target target) {
-    return getTargetsFromNodes(getNode(target).getSuccessors());
-  }
-
-  @Override
   public Collection<Target> getFwdDeps(Iterable<Target> targets) {
     Set<Target> result = new HashSet<>();
     for (Target target : targets) {
-      result.addAll(getFwdDeps(target));
+      result.addAll(getTargetsFromNodes(getNode(target).getSuccessors()));
     }
     return result;
   }
 
   @Override
-  public Collection<Target> getReverseDeps(Target target) {
-    return getTargetsFromNodes(getNode(target).getPredecessors());
-  }
-
-  @Override
   public Collection<Target> getReverseDeps(Iterable<Target> targets) {
     Set<Target> result = new HashSet<>();
     for (Target target : targets) {
-      result.addAll(getReverseDeps(target));
+      result.addAll(getTargetsFromNodes(getNode(target).getPredecessors()));
     }
     return result;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
index 00ddd2b..473c69d 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
@@ -19,6 +19,7 @@
 import com.google.common.base.Predicates;
 import com.google.common.base.Supplier;
 import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
@@ -126,10 +127,6 @@
     return TransitiveTargetValue.key(value.getLabel());
   }
 
-  private Collection<Target> getRawFwdDeps(Target target) {
-    return makeTargets(graph.getDirectDeps(makeKey(target)));
-  }
-
   private Map<Target, Collection<Target>> makeTargetsMap(Map<SkyKey, Iterable<SkyKey>> input) {
     ImmutableMap.Builder<Target, Collection<Target>> result = ImmutableMap.builder();
 
@@ -143,10 +140,6 @@
     return makeTargetsMap(graph.getDirectDeps(makeKeys(targets)));
   }
 
-  private Collection<Target> getRawReverseDeps(Target target) {
-    return makeTargets(graph.getReverseDeps(makeKey(target)));
-  }
-
   private Map<Target, Collection<Target>> getRawReverseDeps(Iterable<Target> targets) {
     return makeTargetsMap(graph.getReverseDeps(makeKeys(targets)));
   }
@@ -174,11 +167,6 @@
   }
 
   @Override
-  public Collection<Target> getFwdDeps(Target target) {
-    return filterFwdDeps(target, getRawFwdDeps(target));
-  }
-
-  @Override
   public Collection<Target> getFwdDeps(Iterable<Target> targets) {
     Set<Target> result = new HashSet<>();
     for (Map.Entry<Target, Collection<Target>> entry : getRawFwdDeps(targets).entrySet()) {
@@ -200,11 +188,6 @@
   }
 
   @Override
-  public Collection<Target> getReverseDeps(Target target) {
-    return filterReverseDeps(target, getRawReverseDeps(target));
-  }
-
-  @Override
   public Collection<Target> getReverseDeps(Iterable<Target> targets) {
     Set<Target> result = new HashSet<>();
     for (Map.Entry<Target, Collection<Target>> entry : getRawReverseDeps(targets).entrySet()) {
@@ -240,7 +223,7 @@
       if (to.equals(current)) {
         return ImmutableSet.copyOf(Digraph.getPathToTreeNode(nodeToParent, to));
       }
-      for (Target dep : getFwdDeps(current)) {
+      for (Target dep : getFwdDeps(ImmutableList.of(current))) {
         if (!nodeToParent.containsKey(dep)) {
           nodeToParent.put(dep, current);
           toVisit.addFirst(dep);
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java b/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java
index d2d5f05..4920298 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java
@@ -19,8 +19,9 @@
 import com.google.devtools.build.lib.query2.engine.QueryEnvironment.ArgumentType;
 import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
@@ -65,11 +66,11 @@
 
     Set<T> reachableFromX = env.getTransitiveClosure(fromValue);
     Set<T> result = intersection(reachableFromX, toValue);
-    LinkedList<T> worklist = new LinkedList<>(result);
-
-    T n;
-    while ((n = worklist.poll()) != null) {
-      for (T np : env.getReverseDeps(n)) {
+    Collection<T> worklist = result;
+    while (!worklist.isEmpty()) {
+      Collection<T> reverseDeps = env.getReverseDeps(worklist);
+      worklist = new ArrayList<>();
+      for (T np : reverseDeps) {
         if (reachableFromX.contains(np)) {
           if (result.add(np)) {
             worklist.add(np);
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java
index a6d6156..78812cc 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java
@@ -152,15 +152,9 @@
   // be possible to remove it.
   T getOrCreate(T target);
 
-  /** Returns the direct forward dependencies of the specified target. */
-  Collection<T> getFwdDeps(T target);
-
   /** Returns the direct forward dependencies of the specified targets. */
   Collection<T> getFwdDeps(Iterable<T> targets);
 
-  /** Returns the direct reverse dependencies of the specified target. */
-  Collection<T> getReverseDeps(T target);
-
   /** Returns the direct reverse dependencies of the specified targets. */
   Collection<T> getReverseDeps(Iterable<T> targets);
 
diff --git a/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java b/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java
index fee4f9c..b88b8903 100644
--- a/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java
@@ -82,11 +82,6 @@
     return errorInfo == null ? null : errorInfo.getException();
   }
 
-  @Override
-  public Iterable<SkyKey> getDirectDeps(SkyKey key) {
-    return getEntry(key).getDirectDeps();
-  }
-
   private static final Function<NodeEntry, Iterable<SkyKey>> GET_DIRECT_DEPS_FUNCTION =
       new Function<NodeEntry, Iterable<SkyKey>>() {
         @Override
@@ -100,11 +95,6 @@
     return Maps.transformValues(getEntries(keys), GET_DIRECT_DEPS_FUNCTION);
   }
 
-  @Override
-  public Iterable<SkyKey> getReverseDeps(SkyKey key) {
-    return getEntry(key).getReverseDeps();
-  }
-
   private static final Function<NodeEntry, Iterable<SkyKey>> GET_REVERSE_DEPS_FUNCTION =
       new Function<NodeEntry, Iterable<SkyKey>>() {
         @Override
diff --git a/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java b/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java
index e020a26..be68248 100644
--- a/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java
@@ -48,31 +48,20 @@
 
   /**
    * Returns the exception thrown when computing the node with the given key, if any. If the node
-   * was computed successfully, returns null. A node with this key must exist in the graph.
+   * was computed successfully, returns null. A node with this key must exist and be done in the
+   * graph.
    */
   @Nullable Exception getException(SkyKey key);
 
   /**
-   * Returns the direct dependencies of the node with the given key. A node with this key must exist
-   * in the graph.
-   */
-  Iterable<SkyKey> getDirectDeps(SkyKey key);
-
-  /**
-   * Returns a map giving the direct dependencies of the nodes with the given keys. Same semantics
-   * as {@link #getDirectDeps(SkyKey)}.
+   * Returns a map giving the direct dependencies of the nodes with the given keys. A node for each
+   * given key must exist and be done in the graph.
    */
   Map<SkyKey, Iterable<SkyKey>> getDirectDeps(Iterable<SkyKey> keys);
 
-    /**
-     * Returns the reverse dependencies of the node with the given key. A node with this key must
-     * exist in the graph.
-     */
-  Iterable<SkyKey> getReverseDeps(SkyKey key);
-
   /**
-   * Returns a map giving the reverse dependencies of the nodes with the given keys. Same semantics
-   * as {@link #getReverseDeps(SkyKey)}.
+   * Returns a map giving the reverse dependencies of the nodes with the given keys. A node for each
+   * given key must exist and be done in the graph.
    */
   Map<SkyKey, Iterable<SkyKey>> getReverseDeps(Iterable<SkyKey> keys);