Replace QueryableGraph#getBatch with #getBatchWithFieldHints. This allows alternate graph implementations to optimize how they construct node entries.

--
MOS_MIGRATED_REVID=126932020
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 0419828..2703802 100644
--- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
@@ -15,6 +15,7 @@
 
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 
+import java.util.EnumSet;
 import java.util.Map;
 
 import javax.annotation.Nullable;
@@ -27,9 +28,13 @@
   NodeEntry get(SkyKey key);
 
   /**
-   * Fetches all the given nodes. Returns a map {@code m} such that, for all {@code k} in
-   * {@code keys}, {@code m.get(k).equals(e)} iff {@code get(k) == e} and {@code e != null}, and
-   * {@code !m.containsKey(k)} iff {@code get(k) == null}.
+   * Fetches all the given nodes. Returns a map {@code m} such that, for all {@code k} in {@code
+   * keys}, {@code m.get(k).equals(e)} iff {@code get(k) == e} and {@code e != null}, and {@code
+   * !m.containsKey(k)} iff {@code get(k) == null}. The {@code fields} parameter is a hint to the
+   * QueryableGraph implementation that allows it to possibly construct certain fields of the
+   * returned node entries more lazily. Hints may only be applied to nodes in a certain state, like
+   * done nodes.
    */
-  Map<SkyKey, NodeEntry> getBatch(Iterable<SkyKey> keys);
+  Map<SkyKey, NodeEntry> getBatchWithFieldHints(
+      Iterable<SkyKey> keys, EnumSet<NodeEntryField> fields);
 }