docs: private static ImmutableMap<String, AnnotationInfo> buildImmutableClasses(
        List<String> extraKnownImmutables) {
      return new Builder()
          .addStrings(extraKnownImmutables)
          .addClasses(Primitives.allPrimitiveTypes())
          .addClasses(Primitives.allWrapperTypes())
          .add("com.google.protobuf.ByteString")
          .add("com.google.protobuf.Descriptors$Descriptor")
          .add("com.google.protobuf.Descriptors$EnumDescriptor")
          .add("com.google.protobuf.Descriptors$EnumValueDescriptor")
          .add("com.google.protobuf.Descriptors$FieldDescriptor")
          .add("com.google.protobuf.Descriptors$FileDescriptor")
          .add("com.google.protobuf.Descriptors$ServiceDescriptor")
          .add("com.google.protobuf.Extension")
          .add("com.google.protobuf.ExtensionRegistry$ExtensionInfo")
          // NOTE: GeneratedMessage is included here for external tests that use this class for
          // checking whether classes are immutable. Within error prone, protos are verified
          // using isProto2MessageClass from this class.
          .add("com.google.protobuf.GeneratedMessage")
          .add("com.google.re2j.Pattern")
          .add("com.google.inject.TypeLiteral")
          .add("com.google.inject.Key")
          .add(com.google.common.base.CharMatcher.class)
          .add(com.google.common.base.Converter.class)
          .add(com.google.common.base.Joiner.class)
          .add(com.google.common.base.Optional.class, "T")
          .add(com.google.common.base.Splitter.class)
          .add(com.google.common.collect.ContiguousSet.class, "C")
          .add(com.google.common.collect.ImmutableBiMap.class, "K", "V")
          .add(com.google.common.collect.ImmutableCollection.class, "E")
          .add(com.google.common.collect.ImmutableList.class, "E")
          .add(com.google.common.collect.ImmutableListMultimap.class, "K", "V")
          .add(com.google.common.collect.ImmutableMap.class, "K", "V")
          .add(com.google.common.collect.ImmutableMultimap.class, "K", "V")
          .add(com.google.common.collect.ImmutableMultiset.class, "E")
          .add(com.google.common.collect.ImmutableRangeMap.class, "K", "V")
          .add(com.google.common.collect.ImmutableRangeSet.class, "C")
          .add(com.google.common.collect.ImmutableSet.class, "E")
          .add(com.google.common.collect.ImmutableSetMultimap.class, "K", "V")
          .add(com.google.common.collect.ImmutableSortedMap.class, "K", "V")
          .add(com.google.common.collect.ImmutableSortedMultiset.class, "E")
          .add(com.google.common.collect.ImmutableSortedSet.class, "E")
          .add(com.google.common.collect.ImmutableTable.class, "R", "C", "V")
          .add(com.google.common.collect.Range.class, "C")
          .add(com.google.common.graph.ImmutableGraph.class, "N")
          .add(com.google.common.graph.ImmutableNetwork.class, "N", "E")
          .add(com.google.common.graph.ImmutableValueGraph.class, "N", "V")
          .add("com.google.common.hash.AbstractHashFunction") // package-private
          .add(com.google.common.hash.HashCode.class)
          .add(com.google.common.io.BaseEncoding.class)
          .add(com.google.common.net.MediaType.class)
          .add(com.google.common.primitives.UnsignedInteger.class)
          .add(com.google.common.primitives.UnsignedLong.class)
          .add("com.ibm.icu.number.LocalizedNumberFormatter")
          .add("com.ibm.icu.number.LocalizedNumberRangeFormatter")
          .add("com.ibm.icu.number.UnlocalizedNumberFormatter")
          .add("com.ibm.icu.number.UnlocalizedNumberRangeFormatter")
          .add("com.ibm.icu.util.Currency")
          .add("com.ibm.icu.util.ULocale")
          .add(java.lang.Class.class)
          .add(java.lang.String.class)
          .add(java.lang.annotation.Annotation.class)
          .add(java.math.BigDecimal.class)
          .add(java.math.BigInteger.class)
          .add(java.net.InetAddress.class)
          .add(java.net.URI.class)
          .add(java.nio.charset.Charset.class)
          .add(java.nio.file.Path.class)
          .add(java.nio.file.WatchEvent.class)
          .add(java.nio.file.attribute.AclEntry.class)
          .add(java.nio.file.attribute.FileTime.class)
          .add(java.util.UUID.class)
          .add(java.util.Locale.class)
          .add(java.util.regex.Pattern.class)
          .add("android.net.Uri")
          .add("java.util.AbstractMap$SimpleImmutableEntry", "K", "V")
          .add("java.util.Optional", "T")
          .add("java.util.OptionalDouble")
          .add("java.util.OptionalInt")
          .add("java.util.OptionalLong")
          .add("java.time.Duration")
          .add("java.time.Instant")
          .add("java.time.LocalDate")
          .add("java.time.LocalDateTime")
          .add("java.time.LocalTime")
          .add("java.time.MonthDay")
          .add("java.time.OffsetDateTime")
          .add("java.time.OffsetTime")
          .add("java.time.Period")
          .add("java.time.Year")
          .add("java.time.YearMonth")
          .add("java.time.ZoneId")
          .add("java.time.ZoneOffset")
          .add("java.time.ZonedDateTime")
          .add("java.time.chrono.AbstractChronology")
          .add("java.time.chrono.ChronoLocalDate")
          .add("java.time.chrono.ChronoLocalDateTime", "D")
          .add("java.time.chrono.ChronoPeriod")
          .add("java.time.chrono.ChronoZonedDateTime", "D")
          .add("java.time.chrono.Chronology")
          .add("java.time.chrono.Era")
          .add("java.time.chrono.HijrahChronology")
          .add("java.time.chrono.HijrahDate")
          .add("java.time.chrono.IsoChronology")
          .add("java.time.chrono.JapaneseChronology")
          .add("java.time.chrono.JapaneseDate")
          .add("java.time.chrono.JapaneseEra")
          .add("java.time.chrono.MinguoChronology")
          .add("java.time.chrono.MinguoDate")
          .add("java.time.chrono.ThaiBuddhistChronology")
          .add("java.time.chrono.ThaiBuddhistDate")
          .add("java.time.format.DateTimeFormatter")
          .add("java.time.format.DecimalStyle")
          .add("java.time.temporal.TemporalField")
          .add("java.time.temporal.TemporalUnit")
          .add("java.time.temporal.ValueRange")
          .add("java.time.temporal.WeekFields")
          .add("java.time.zone.ZoneOffsetTransition")
          .add("java.time.zone.ZoneOffsetTransitionRule")
          .add("java.time.zone.ZoneRules")
          .add("java.time.zone.ZoneRulesProvider")
          .add("org.threeten.bp.Duration")
          .add("org.threeten.bp.Instant")
          .add("org.threeten.bp.LocalDate")
          .add("org.threeten.bp.LocalDateTime")
          .add("org.threeten.bp.LocalTime")
          .add("org.threeten.bp.MonthDay")
          .add("org.threeten.bp.OffsetDateTime")
          .add("org.threeten.bp.OffsetTime")
          .add("org.threeten.bp.Period")
          .add("org.threeten.bp.Year")
          .add("org.threeten.bp.YearMonth")
          .add("org.threeten.bp.ZoneId")
          .add("org.threeten.bp.ZoneOffset")
          .add("org.threeten.bp.ZonedDateTime")
          .add("org.threeten.bp.chrono.AbstractChronology")
          .add("org.threeten.bp.chrono.ChronoLocalDate")
          .add("org.threeten.bp.chrono.ChronoLocalDateTime", "D")
          .add("org.threeten.bp.chrono.ChronoPeriod")
          .add("org.threeten.bp.chrono.ChronoZonedDateTime", "D")
          .add("org.threeten.bp.chrono.Chronology")
          .add("org.threeten.bp.chrono.Era")
          .add("org.threeten.bp.chrono.HijrahChronology")
          .add("org.threeten.bp.chrono.HijrahDate")
          .add("org.threeten.bp.chrono.IsoChronology")
          .add("org.threeten.bp.chrono.JapaneseChronology")
          .add("org.threeten.bp.chrono.JapaneseDate")
          .add("org.threeten.bp.chrono.JapaneseEra")
          .add("org.threeten.bp.chrono.MinguoChronology")
          .add("org.threeten.bp.chrono.MinguoDate")
          .add("org.threeten.bp.chrono.ThaiBuddhistChronology")
          .add("org.threeten.bp.chrono.ThaiBuddhistDate")
          .add("org.threeten.bp.format.DateTimeFormatter")
          .add("org.threeten.bp.format.DecimalStyle")
          .add("org.threeten.bp.temporal.TemporalField")
          .add("org.threeten.bp.temporal.TemporalUnit")
          .add("org.threeten.bp.temporal.ValueRange")
          .add("org.threeten.bp.temporal.WeekFields")
          .add("org.threeten.bp.zone.ZoneOffsetTransition")
          .add("org.threeten.bp.zone.ZoneOffsetTransitionRule")
          .add("org.threeten.bp.zone.ZoneRules")
          .add("org.threeten.bp.zone.ZoneRulesProvider")
          .add("org.threeten.extra.Interval")
          .add("org.joda.time.DateTime")
          .add("org.joda.time.DateTimeZone")
          .add("org.joda.time.Days")
          .add("org.joda.time.Duration")
          .add("org.joda.time.Instant")
          .add("org.joda.time.Interval")
          .add("org.joda.time.LocalDate")
          .add("org.joda.time.LocalDateTime")
          .add("org.joda.time.Period")
          .add("org.joda.time.format.DateTimeFormatter")
          .add("org.openqa.selenium.Dimension")
          .add("org.openqa.selenium.DeviceRotation")
          .add("org.openqa.selenium.ImmutableCapabilities")
          .build();
    }