Transition to Dagger using an Any proto to store its statistics information.

RELNOTES: none
PiperOrigin-RevId: 222239117
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD
index 69d693e..651f1fe 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD
@@ -4,6 +4,7 @@
     name = "statistics",
     srcs = ["BlazeJavacStatistics.java"],
     deps = [
+        "any_java_proto",
         "//third_party:auto_value",
         "//third_party:guava",
         "//third_party/java/jdk/langtools:javac",
@@ -16,3 +17,10 @@
         "BUILD",
     ],
 )
+
+# Depend on any_proto for bazel usage (the external repo doesn't expose any_java_proto, just
+# the protos)
+java_proto_library(
+    name = "any_java_proto",
+    deps = ["@com_google_protobuf//:any_proto"],
+)
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java
index 89f9238..e75a036 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java
@@ -16,8 +16,10 @@
 import com.google.auto.value.AutoValue;
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.ImmutableListMultimap;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.errorprone.annotations.MustBeClosed;
+import com.google.protobuf.Any;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.Context.Factory;
 import java.time.Duration;
@@ -66,6 +68,9 @@
         .transitiveClasspathFallback(false);
   }
 
+  public abstract ImmutableMap<TickKey, Any> protoTicks();
+
+  @Deprecated // use protoTicks() instead.
   public abstract ImmutableListMultimap<TickKey, Duration> timingTicks();
 
   public abstract ImmutableListMultimap<String, Duration> errorProneTicks();
@@ -97,6 +102,9 @@
   @AutoValue.Builder
   public abstract static class Builder {
 
+    abstract ImmutableMap.Builder<TickKey, Any> protoTicksBuilder();
+
+    @Deprecated // use protoTicksBuilder() instead
     abstract ImmutableListMultimap.Builder<TickKey, Duration> timingTicksBuilder();
 
     abstract ImmutableListMultimap.Builder<String, Duration> errorProneTicksBuilder();
@@ -116,6 +124,12 @@
 
     public abstract BlazeJavacStatistics build();
 
+    public Builder addTick(TickKey key, Any elapsed) {
+      protoTicksBuilder().put(key, elapsed);
+      return this;
+    }
+
+    @Deprecated // use addTick(key, Any) with a custom proto message.
     public Builder addTick(TickKey key, Duration elapsed) {
       timingTicksBuilder().put(key, elapsed);
       return this;