Stop allowing generic LateBoundDefault value types. Such types are always either a Label or a List<Label>. We can easily enforce this through static type checking, so do it.

This will help with LateBoundDefault serialization, since we don't have to serialize an arbitrary object.

PiperOrigin-RevId: 184347100
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
index b4d91c3..5673ebb 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
@@ -27,10 +27,9 @@
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import com.google.devtools.build.lib.analysis.util.MockRule;
-import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.Location;
-import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
+import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
 import com.google.devtools.build.lib.packages.AttributeMap;
 import com.google.devtools.build.lib.packages.NoSuchTargetException;
 import com.google.devtools.build.lib.packages.Package;
@@ -236,8 +235,8 @@
 
   /** A late bound dependency which depends on the 'dep' label if the 'define' is in --defines. */
   // TODO(b/65746853): provide a way to do this without passing the entire configuration
-  private static final LateBoundDefault<BuildConfiguration, Label> LATE_BOUND_DEP =
-      LateBoundDefault.fromTargetConfiguration(
+  private static final LabelLateBoundDefault<BuildConfiguration> LATE_BOUND_DEP =
+      LabelLateBoundDefault.fromTargetConfiguration(
           BuildConfiguration.class,
           null,
           (rule, attributes, config) ->