upgrade error-prone to 2.7.1 and support checks with Java 11+ (#11363)

* upgrade error-prone to 2.7.1 and support checks with Java 11+

- upgrade error-prone to 2.7.1
- support running error-prone with Java 11 and above using -Xplugin
  instead of custom compiler
- add compiler arguments to ignore warnings/errors in Java 15/16
- introduce strictCompile property to enable strict profiles since we
  now need multiple strict profiles for Java 8
- properly exclude all generated source files from error-prone
- fix druid-processing overriding annotation processors from parent pom
- fix druid-core disabling most non-default checks
- align plugin and annotation errorprone versions
- fix / suppress additional issues found by error-prone:
  * fix bug in SeekableStreamSupervisor initializing ArrayList size with
    the taskGroupdId
  * fix missing @Override annotations
- remove outdated compiler plugin in benchmarks
- remove deleted ParameterPackage error-prone rule
- re-enable checks on benchmark module as well

* fix IntelliJ inspections

* disable LongFloatConversion due to bug in error-prone with JDK 8

* add comment about InsecureCrypto
diff --git a/.travis.yml b/.travis.yml
index b0accff..2d2c304 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -114,8 +114,8 @@
       install: skip
       # Strict compilation requires more than 2 GB
       script: >
-        ./check_test_suite.py && travis_terminate 0 || MAVEN_OPTS='-Xmx3000m' ${MVN} clean -Pstrict compile test-compile --fail-at-end
-        -pl '!benchmarks' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
+        ./check_test_suite.py && travis_terminate 0 || MAVEN_OPTS='-Xmx3000m' ${MVN} clean -DstrictCompile compile test-compile --fail-at-end
+        ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
 
     - name: "analyze dependencies"
       script: |-
diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index db7925c..f5d894e 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -194,16 +194,6 @@
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.1</version>
-        <configuration>
-          <compilerVersion>${javac.target}</compilerVersion>
-          <source>${javac.target}</source>
-          <target>${javac.target}</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
         <version>2.6</version>
         <executions>
diff --git a/core/pom.xml b/core/pom.xml
index 757012d..70ca838 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -429,24 +429,4 @@
       </resource>
     </resources>
   </build>
-
-  <profiles>
-    <profile>
-      <id>strict</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <configuration>
-              <compilerArgs>
-                <!-- Antlr-generated classes miss @Override, that is not easy to fix -->
-                <arg>-Xep:MissingOverride:WARN</arg>
-              </compilerArgs>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
 </project>
diff --git a/core/src/main/java/org/apache/druid/crypto/CryptoService.java b/core/src/main/java/org/apache/druid/crypto/CryptoService.java
index 306ae70..cd4b327 100644
--- a/core/src/main/java/org/apache/druid/crypto/CryptoService.java
+++ b/core/src/main/java/org/apache/druid/crypto/CryptoService.java
@@ -113,6 +113,10 @@
 
       SecretKey tmp = getKeyFromPassword(passPhrase, salt);
       SecretKey secret = new SecretKeySpec(tmp.getEncoded(), cipherAlgName);
+
+      // error-prone warns if the transformation is not a compile-time constant
+      // since it cannot check it for insecure combinations.
+      @SuppressWarnings("InsecureCryptoUsage")
       Cipher ecipher = Cipher.getInstance(transformation);
       ecipher.init(Cipher.ENCRYPT_MODE, secret);
       return new EncryptedData(
@@ -134,6 +138,9 @@
       SecretKey tmp = getKeyFromPassword(passPhrase, encryptedData.getSalt());
       SecretKey secret = new SecretKeySpec(tmp.getEncoded(), cipherAlgName);
 
+      // error-prone warns if the transformation is not a compile-time constant
+      // since it cannot check it for insecure combinations.
+      @SuppressWarnings("InsecureCryptoUsage")
       Cipher dcipher = Cipher.getInstance(transformation);
       dcipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(encryptedData.getIv()));
       return dcipher.doFinal(encryptedData.getCipher());
diff --git a/core/src/main/java/org/apache/druid/math/expr/BinaryLogicalOperatorExpr.java b/core/src/main/java/org/apache/druid/math/expr/BinaryLogicalOperatorExpr.java
index 8ff150f..12f1a8b 100644
--- a/core/src/main/java/org/apache/druid/math/expr/BinaryLogicalOperatorExpr.java
+++ b/core/src/main/java/org/apache/druid/math/expr/BinaryLogicalOperatorExpr.java
@@ -27,7 +27,7 @@
 import java.util.Objects;
 
 // logical operators live here
-
+@SuppressWarnings("ClassName")
 class BinLtExpr extends BinaryEvalOpExprBase
 {
   BinLtExpr(String op, Expr left, Expr right)
@@ -84,6 +84,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinLeqExpr extends BinaryEvalOpExprBase
 {
   BinLeqExpr(String op, Expr left, Expr right)
@@ -140,6 +141,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinGtExpr extends BinaryEvalOpExprBase
 {
   BinGtExpr(String op, Expr left, Expr right)
@@ -195,6 +197,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinGeqExpr extends BinaryEvalOpExprBase
 {
   BinGeqExpr(String op, Expr left, Expr right)
@@ -251,6 +254,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinEqExpr extends BinaryEvalOpExprBase
 {
   BinEqExpr(String op, Expr left, Expr right)
@@ -306,6 +310,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinNeqExpr extends BinaryEvalOpExprBase
 {
   BinNeqExpr(String op, Expr left, Expr right)
@@ -361,6 +366,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinAndExpr extends BinaryOpExprBase
 {
   BinAndExpr(String op, Expr left, Expr right)
diff --git a/core/src/main/java/org/apache/druid/math/expr/BinaryMathOperatorExpr.java b/core/src/main/java/org/apache/druid/math/expr/BinaryMathOperatorExpr.java
index 384249b..14a6136 100644
--- a/core/src/main/java/org/apache/druid/math/expr/BinaryMathOperatorExpr.java
+++ b/core/src/main/java/org/apache/druid/math/expr/BinaryMathOperatorExpr.java
@@ -30,6 +30,7 @@
 
 // math operators live here
 
+@SuppressWarnings("ClassName")
 final class BinPlusExpr extends BinaryEvalOpExprBase
 {
   BinPlusExpr(String op, Expr left, Expr right)
@@ -81,6 +82,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 final class BinMinusExpr extends BinaryEvalOpExprBase
 {
   BinMinusExpr(String op, Expr left, Expr right)
@@ -119,6 +121,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 final class BinMulExpr extends BinaryEvalOpExprBase
 {
   BinMulExpr(String op, Expr left, Expr right)
@@ -157,6 +160,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 final class BinDivExpr extends BinaryEvalOpExprBase
 {
   BinDivExpr(String op, Expr left, Expr right)
@@ -195,6 +199,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinPowExpr extends BinaryEvalOpExprBase
 {
   BinPowExpr(String op, Expr left, Expr right)
@@ -233,6 +238,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class BinModuloExpr extends BinaryEvalOpExprBase
 {
   BinModuloExpr(String op, Expr left, Expr right)
diff --git a/core/src/main/java/org/apache/druid/math/expr/BinaryOperatorExpr.java b/core/src/main/java/org/apache/druid/math/expr/BinaryOperatorExpr.java
index 280d99b..a8dd08b 100644
--- a/core/src/main/java/org/apache/druid/math/expr/BinaryOperatorExpr.java
+++ b/core/src/main/java/org/apache/druid/math/expr/BinaryOperatorExpr.java
@@ -33,6 +33,7 @@
  * Note: all concrete subclass of this should have constructor with the form of <init>(String, Expr, Expr)
  * if it's not possible, just be sure Evals.binaryOp() can handle that
  */
+@SuppressWarnings("ClassName")
 abstract class BinaryOpExprBase implements Expr
 {
   protected final String op;
@@ -112,6 +113,7 @@
  * Base class for numerical binary operators, with additional methods defined to evaluate primitive values directly
  * instead of wrapped with {@link ExprEval}
  */
+@SuppressWarnings("ClassName")
 abstract class BinaryEvalOpExprBase extends BinaryOpExprBase
 {
   BinaryEvalOpExprBase(String op, Expr left, Expr right)
diff --git a/core/src/main/java/org/apache/druid/math/expr/FunctionalExpr.java b/core/src/main/java/org/apache/druid/math/expr/FunctionalExpr.java
index 00f381b..5e164e1 100644
--- a/core/src/main/java/org/apache/druid/math/expr/FunctionalExpr.java
+++ b/core/src/main/java/org/apache/druid/math/expr/FunctionalExpr.java
@@ -30,6 +30,7 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
+@SuppressWarnings("ClassName")
 class LambdaExpr implements Expr
 {
   private final ImmutableList<IdentifierExpr> args;
@@ -150,6 +151,7 @@
  * list of arguments that are passed to the {@link Function} along with the {@link Expr.ObjectBinding} when it is
  * evaluated.
  */
+@SuppressWarnings("ClassName")
 class FunctionExpr implements Expr
 {
   final Function function;
@@ -247,6 +249,7 @@
  * {@link LambdaExpr} and the list of {@link Expr} arguments that are combined with {@link Expr.ObjectBinding} to
  * evaluate the {@link LambdaExpr}.
  */
+@SuppressWarnings("ClassName")
 class ApplyFunctionExpr implements Expr
 {
   final ApplyFunction function;
diff --git a/core/src/main/java/org/apache/druid/math/expr/UnaryOperatorExpr.java b/core/src/main/java/org/apache/druid/math/expr/UnaryOperatorExpr.java
index 6993ed7..a0d16eb 100644
--- a/core/src/main/java/org/apache/druid/math/expr/UnaryOperatorExpr.java
+++ b/core/src/main/java/org/apache/druid/math/expr/UnaryOperatorExpr.java
@@ -32,6 +32,7 @@
 /**
  * Base type for all single argument operators, with a single {@link Expr} child for the operand.
  */
+@SuppressWarnings("ClassName")
 abstract class UnaryExpr implements Expr
 {
   final String op;
@@ -102,6 +103,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class UnaryMinusExpr extends UnaryExpr
 {
   UnaryMinusExpr(String op, Expr expr)
@@ -144,6 +146,7 @@
   }
 }
 
+@SuppressWarnings("ClassName")
 class UnaryNotExpr extends UnaryExpr
 {
   UnaryNotExpr(String op, Expr expr)
diff --git a/core/src/test/java/org/apache/druid/java/util/common/parsers/TimestampParserTest.java b/core/src/test/java/org/apache/druid/java/util/common/parsers/TimestampParserTest.java
index a5622d5..d94ec8f 100644
--- a/core/src/test/java/org/apache/druid/java/util/common/parsers/TimestampParserTest.java
+++ b/core/src/test/java/org/apache/druid/java/util/common/parsers/TimestampParserTest.java
@@ -204,7 +204,7 @@
                         expectedDt, parser.apply(yearMonth));
 
     // Friday, May 15, 2020 8:20:40 PM GMT
-    long millis = 1589574040000l;
+    long millis = 1589574040000L;
     expectedDt = DateTimes.of("2020-05-15T20:20:40.000Z");
 
     parser = TimestampParser.createObjectTimestampParser("millis");
@@ -219,7 +219,7 @@
     Assert.assertEquals("Timestamp of format posix not parsed correctly",
                         expectedDt, parser.apply(posix));
 
-    long micro = 1589574040000000l;
+    long micro = 1589574040000000L;
     parser = TimestampParser.createObjectTimestampParser("micro");
     Assert.assertEquals("Timestamp of format micro not parsed correctly",
                         expectedDt, parser.apply(micro));
diff --git a/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/LoadingLookupFactoryTest.java b/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/LoadingLookupFactoryTest.java
index adda834..be6acd5 100644
--- a/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/LoadingLookupFactoryTest.java
+++ b/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/LoadingLookupFactoryTest.java
@@ -165,6 +165,7 @@
     }
 
     @Override
+    @SuppressWarnings("EqualsHashCode")
     public boolean equals(Object obj)
     {
       return obj instanceof MockDataFetcher;
diff --git a/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupSerDeserTest.java b/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupSerDeserTest.java
index eef78c0..fed973a 100644
--- a/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupSerDeserTest.java
+++ b/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupSerDeserTest.java
@@ -103,6 +103,7 @@
     }
 
     @Override
+    @SuppressWarnings("EqualsHashCode")
     public boolean equals(Object obj)
     {
       return obj instanceof MockDataFetcher;
diff --git a/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupTest.java b/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupTest.java
index 715100d..2aabe93 100644
--- a/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupTest.java
+++ b/extensions-core/lookups-cached-single/src/test/java/org/apache/druid/server/lookup/PollingLookupTest.java
@@ -102,6 +102,7 @@
     }
 
     @Override
+    @SuppressWarnings("EqualsHashCode")
     public boolean equals(Object obj)
     {
       return obj instanceof MockDataFetcher;
diff --git a/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtoTestEventWrapper.java b/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtoTestEventWrapper.java
index 0b370c2..80c6987 100644
--- a/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtoTestEventWrapper.java
+++ b/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtoTestEventWrapper.java
@@ -410,6 +410,7 @@
       public static final int CATEGORY_TWO_VALUE = 2;
 
 
+      @Override
       public final int getNumber() {
         return value;
       }
@@ -444,15 +445,18 @@
       private static final com.google.protobuf.Internal.EnumLiteMap<
           EventCategory> internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<EventCategory>() {
+              @Override
               public EventCategory findValueByNumber(int number) {
                 return EventCategory.forNumber(number);
               }
             };
 
+      @Override
       public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
         return getDescriptor().getValues().get(ordinal());
       }
+      @Override
       public final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptorForType() {
         return getDescriptor();
@@ -519,14 +523,14 @@
         bar_ = "";
       }
 
-      @java.lang.Override
+      @Override
       @SuppressWarnings({"unused"})
       protected java.lang.Object newInstance(
           UnusedPrivateParameter unused) {
         return new Foo();
       }
 
-      @java.lang.Override
+      @Override
       public final com.google.protobuf.UnknownFieldSet
       getUnknownFields() {
         return this.unknownFields;
@@ -595,7 +599,7 @@
        * <code>required string bar = 1;</code>
        * @return Whether the bar field is set.
        */
-      @java.lang.Override
+      @Override
       public boolean hasBar() {
         return ((bitField0_ & 0x00000001) != 0);
       }
@@ -603,7 +607,7 @@
        * <code>required string bar = 1;</code>
        * @return The bar.
        */
-      @java.lang.Override
+      @Override
       public java.lang.String getBar() {
         java.lang.Object ref = bar_;
         if (ref instanceof java.lang.String) {
@@ -622,7 +626,7 @@
        * <code>required string bar = 1;</code>
        * @return The bytes for bar.
        */
-      @java.lang.Override
+      @Override
       public com.google.protobuf.ByteString
           getBarBytes() {
         java.lang.Object ref = bar_;
@@ -652,7 +656,7 @@
         return true;
       }
 
-      @java.lang.Override
+      @Override
       public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
         if (((bitField0_ & 0x00000001) != 0)) {
@@ -661,7 +665,7 @@
         unknownFields.writeTo(output);
       }
 
-      @java.lang.Override
+      @Override
       public int getSerializedSize() {
         int size = memoizedSize;
         if (size != -1) return size;
@@ -675,7 +679,7 @@
         return size;
       }
 
-      @java.lang.Override
+      @Override
       public boolean equals(final java.lang.Object obj) {
         if (obj == this) {
          return true;
@@ -694,7 +698,7 @@
         return true;
       }
 
-      @java.lang.Override
+      @Override
       public int hashCode() {
         if (memoizedHashCode != 0) {
           return memoizedHashCode;
@@ -835,7 +839,7 @@
                   .alwaysUseFieldBuilders) {
           }
         }
-        @java.lang.Override
+        @Override
         public Builder clear() {
           super.clear();
           bar_ = "";
@@ -843,18 +847,18 @@
           return this;
         }
 
-        @java.lang.Override
+        @Override
         public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
           return org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.internal_static_prototest_ProtoTestEvent_Foo_descriptor;
         }
 
-        @java.lang.Override
+        @Override
         public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo getDefaultInstanceForType() {
           return org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo.getDefaultInstance();
         }
 
-        @java.lang.Override
+        @Override
         public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo build() {
           org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo result = buildPartial();
           if (!result.isInitialized()) {
@@ -863,7 +867,7 @@
           return result;
         }
 
-        @java.lang.Override
+        @Override
         public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo buildPartial() {
           org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo result = new org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo(this);
           int from_bitField0_ = bitField0_;
@@ -877,39 +881,39 @@
           return result;
         }
 
-        @java.lang.Override
+        @Override
         public Builder clone() {
           return super.clone();
         }
-        @java.lang.Override
+        @Override
         public Builder setField(
             com.google.protobuf.Descriptors.FieldDescriptor field,
             java.lang.Object value) {
           return super.setField(field, value);
         }
-        @java.lang.Override
+        @Override
         public Builder clearField(
             com.google.protobuf.Descriptors.FieldDescriptor field) {
           return super.clearField(field);
         }
-        @java.lang.Override
+        @Override
         public Builder clearOneof(
             com.google.protobuf.Descriptors.OneofDescriptor oneof) {
           return super.clearOneof(oneof);
         }
-        @java.lang.Override
+        @Override
         public Builder setRepeatedField(
             com.google.protobuf.Descriptors.FieldDescriptor field,
             int index, java.lang.Object value) {
           return super.setRepeatedField(field, index, value);
         }
-        @java.lang.Override
+        @Override
         public Builder addRepeatedField(
             com.google.protobuf.Descriptors.FieldDescriptor field,
             java.lang.Object value) {
           return super.addRepeatedField(field, value);
         }
-        @java.lang.Override
+        @Override
         public Builder mergeFrom(com.google.protobuf.Message other) {
           if (other instanceof org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo) {
             return mergeFrom((org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo)other);
@@ -931,7 +935,7 @@
           return this;
         }
 
-        @java.lang.Override
+        @Override
         public final boolean isInitialized() {
           if (!hasBar()) {
             return false;
@@ -939,7 +943,7 @@
           return true;
         }
 
-        @java.lang.Override
+        @Override
         public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -964,6 +968,7 @@
          * <code>required string bar = 1;</code>
          * @return Whether the bar field is set.
          */
+        @Override
         public boolean hasBar() {
           return ((bitField0_ & 0x00000001) != 0);
         }
@@ -971,6 +976,7 @@
          * <code>required string bar = 1;</code>
          * @return The bar.
          */
+        @Override
         public java.lang.String getBar() {
           java.lang.Object ref = bar_;
           if (!(ref instanceof java.lang.String)) {
@@ -989,6 +995,7 @@
          * <code>required string bar = 1;</code>
          * @return The bytes for bar.
          */
+        @Override
         public com.google.protobuf.ByteString
             getBarBytes() {
           java.lang.Object ref = bar_;
@@ -1042,13 +1049,13 @@
           onChanged();
           return this;
         }
-        @java.lang.Override
+        @Override
         public final Builder setUnknownFields(
             final com.google.protobuf.UnknownFieldSet unknownFields) {
           return super.setUnknownFields(unknownFields);
         }
 
-        @java.lang.Override
+        @Override
         public final Builder mergeUnknownFields(
             final com.google.protobuf.UnknownFieldSet unknownFields) {
           return super.mergeUnknownFields(unknownFields);
@@ -1070,7 +1077,7 @@
 
       @java.lang.Deprecated public static final com.google.protobuf.Parser<Foo>
           PARSER = new com.google.protobuf.AbstractParser<Foo>() {
-        @java.lang.Override
+        @Override
         public Foo parsePartialFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -1083,12 +1090,12 @@
         return PARSER;
       }
 
-      @java.lang.Override
+      @Override
       public com.google.protobuf.Parser<Foo> getParserForType() {
         return PARSER;
       }
 
-      @java.lang.Override
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo getDefaultInstanceForType() {
         return DEFAULT_INSTANCE;
       }
@@ -1102,14 +1109,14 @@
      * <code>required .prototest.ProtoTestEvent.EventCategory eventType = 1;</code>
      * @return Whether the eventType field is set.
      */
-    @java.lang.Override public boolean hasEventType() {
+    @Override public boolean hasEventType() {
       return ((bitField0_ & 0x00000001) != 0);
     }
     /**
      * <code>required .prototest.ProtoTestEvent.EventCategory eventType = 1;</code>
      * @return The eventType.
      */
-    @java.lang.Override public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory getEventType() {
+    @Override public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory getEventType() {
       @SuppressWarnings("deprecation")
       org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory result = org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory.valueOf(eventType_);
       return result == null ? org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory.CATEGORY_ZERO : result;
@@ -1121,7 +1128,7 @@
      * <code>required uint64 id = 2;</code>
      * @return Whether the id field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasId() {
       return ((bitField0_ & 0x00000002) != 0);
     }
@@ -1129,7 +1136,7 @@
      * <code>required uint64 id = 2;</code>
      * @return The id.
      */
-    @java.lang.Override
+    @Override
     public long getId() {
       return id_;
     }
@@ -1140,7 +1147,7 @@
      * <code>required string timestamp = 3;</code>
      * @return Whether the timestamp field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasTimestamp() {
       return ((bitField0_ & 0x00000004) != 0);
     }
@@ -1148,7 +1155,7 @@
      * <code>required string timestamp = 3;</code>
      * @return The timestamp.
      */
-    @java.lang.Override
+    @Override
     public java.lang.String getTimestamp() {
       java.lang.Object ref = timestamp_;
       if (ref instanceof java.lang.String) {
@@ -1167,7 +1174,7 @@
      * <code>required string timestamp = 3;</code>
      * @return The bytes for timestamp.
      */
-    @java.lang.Override
+    @Override
     public com.google.protobuf.ByteString
         getTimestampBytes() {
       java.lang.Object ref = timestamp_;
@@ -1188,7 +1195,7 @@
      * <code>optional uint32 someOtherId = 4;</code>
      * @return Whether the someOtherId field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasSomeOtherId() {
       return ((bitField0_ & 0x00000008) != 0);
     }
@@ -1196,7 +1203,7 @@
      * <code>optional uint32 someOtherId = 4;</code>
      * @return The someOtherId.
      */
-    @java.lang.Override
+    @Override
     public int getSomeOtherId() {
       return someOtherId_;
     }
@@ -1207,7 +1214,7 @@
      * <code>optional bool isValid = 5;</code>
      * @return Whether the isValid field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasIsValid() {
       return ((bitField0_ & 0x00000010) != 0);
     }
@@ -1215,7 +1222,7 @@
      * <code>optional bool isValid = 5;</code>
      * @return The isValid.
      */
-    @java.lang.Override
+    @Override
     public boolean getIsValid() {
       return isValid_;
     }
@@ -1226,7 +1233,7 @@
      * <code>optional string description = 6;</code>
      * @return Whether the description field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasDescription() {
       return ((bitField0_ & 0x00000020) != 0);
     }
@@ -1234,7 +1241,7 @@
      * <code>optional string description = 6;</code>
      * @return The description.
      */
-    @java.lang.Override
+    @Override
     public java.lang.String getDescription() {
       java.lang.Object ref = description_;
       if (ref instanceof java.lang.String) {
@@ -1253,7 +1260,7 @@
      * <code>optional string description = 6;</code>
      * @return The bytes for description.
      */
-    @java.lang.Override
+    @Override
     public com.google.protobuf.ByteString
         getDescriptionBytes() {
       java.lang.Object ref = description_;
@@ -1274,7 +1281,7 @@
      * <code>optional float someFloatColumn = 7;</code>
      * @return Whether the someFloatColumn field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasSomeFloatColumn() {
       return ((bitField0_ & 0x00000040) != 0);
     }
@@ -1282,7 +1289,7 @@
      * <code>optional float someFloatColumn = 7;</code>
      * @return The someFloatColumn.
      */
-    @java.lang.Override
+    @Override
     public float getSomeFloatColumn() {
       return someFloatColumn_;
     }
@@ -1293,7 +1300,7 @@
      * <code>optional uint32 someIntColumn = 8;</code>
      * @return Whether the someIntColumn field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasSomeIntColumn() {
       return ((bitField0_ & 0x00000080) != 0);
     }
@@ -1301,7 +1308,7 @@
      * <code>optional uint32 someIntColumn = 8;</code>
      * @return The someIntColumn.
      */
-    @java.lang.Override
+    @Override
     public int getSomeIntColumn() {
       return someIntColumn_;
     }
@@ -1312,7 +1319,7 @@
      * <code>optional uint64 someLongColumn = 9;</code>
      * @return Whether the someLongColumn field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasSomeLongColumn() {
       return ((bitField0_ & 0x00000100) != 0);
     }
@@ -1320,7 +1327,7 @@
      * <code>optional uint64 someLongColumn = 9;</code>
      * @return The someLongColumn.
      */
-    @java.lang.Override
+    @Override
     public long getSomeLongColumn() {
       return someLongColumn_;
     }
@@ -1331,7 +1338,7 @@
      * <code>optional .prototest.ProtoTestEvent.Foo foo = 10;</code>
      * @return Whether the foo field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasFoo() {
       return ((bitField0_ & 0x00000200) != 0);
     }
@@ -1339,14 +1346,14 @@
      * <code>optional .prototest.ProtoTestEvent.Foo foo = 10;</code>
      * @return The foo.
      */
-    @java.lang.Override
+    @Override
     public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo getFoo() {
       return foo_ == null ? org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo.getDefaultInstance() : foo_;
     }
     /**
      * <code>optional .prototest.ProtoTestEvent.Foo foo = 10;</code>
      */
-    @java.lang.Override
+    @Override
     public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.FooOrBuilder getFooOrBuilder() {
       return foo_ == null ? org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo.getDefaultInstance() : foo_;
     }
@@ -1356,14 +1363,14 @@
     /**
      * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
      */
-    @java.lang.Override
+    @Override
     public java.util.List<org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo> getBarList() {
       return bar_;
     }
     /**
      * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
      */
-    @java.lang.Override
+    @Override
     public java.util.List<? extends org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.FooOrBuilder> 
         getBarOrBuilderList() {
       return bar_;
@@ -1371,21 +1378,21 @@
     /**
      * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
      */
-    @java.lang.Override
+    @Override
     public int getBarCount() {
       return bar_.size();
     }
     /**
      * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
      */
-    @java.lang.Override
+    @Override
     public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo getBar(int index) {
       return bar_.get(index);
     }
     /**
      * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
      */
-    @java.lang.Override
+    @Override
     public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.FooOrBuilder getBarOrBuilder(
         int index) {
       return bar_.get(index);
@@ -1397,7 +1404,7 @@
      * <code>optional .google.protobuf.Timestamp otherTimestamp = 12;</code>
      * @return Whether the otherTimestamp field is set.
      */
-    @java.lang.Override
+    @Override
     public boolean hasOtherTimestamp() {
       return ((bitField0_ & 0x00000400) != 0);
     }
@@ -1405,20 +1412,20 @@
      * <code>optional .google.protobuf.Timestamp otherTimestamp = 12;</code>
      * @return The otherTimestamp.
      */
-    @java.lang.Override
+    @Override
     public com.google.protobuf.Timestamp getOtherTimestamp() {
       return otherTimestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : otherTimestamp_;
     }
     /**
      * <code>optional .google.protobuf.Timestamp otherTimestamp = 12;</code>
      */
-    @java.lang.Override
+    @Override
     public com.google.protobuf.TimestampOrBuilder getOtherTimestampOrBuilder() {
       return otherTimestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : otherTimestamp_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
+    @Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -1452,7 +1459,7 @@
       return true;
     }
 
-    @java.lang.Override
+    @Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (((bitField0_ & 0x00000001) != 0)) {
@@ -1494,7 +1501,7 @@
       unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
+    @Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -1551,7 +1558,7 @@
       return size;
     }
 
-    @java.lang.Override
+    @Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
@@ -1622,7 +1629,7 @@
       return true;
     }
 
-    @java.lang.Override
+    @Override
     public int hashCode() {
       if (memoizedHashCode != 0) {
         return memoizedHashCode;
@@ -1756,7 +1763,7 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
+    @Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -1764,13 +1771,13 @@
     public static Builder newBuilder(org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
+    @Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
     }
 
-    @java.lang.Override
+    @Override
     protected Builder newBuilderForType(
         com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
@@ -1788,7 +1795,7 @@
         return org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.internal_static_prototest_ProtoTestEvent_descriptor;
       }
 
-      @java.lang.Override
+      @Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.internal_static_prototest_ProtoTestEvent_fieldAccessorTable
@@ -1814,7 +1821,7 @@
           getOtherTimestampFieldBuilder();
         }
       }
-      @java.lang.Override
+      @Override
       public Builder clear() {
         super.clear();
         eventType_ = 0;
@@ -1856,18 +1863,18 @@
         return this;
       }
 
-      @java.lang.Override
+      @Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.internal_static_prototest_ProtoTestEvent_descriptor;
       }
 
-      @java.lang.Override
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent getDefaultInstanceForType() {
         return org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.getDefaultInstance();
       }
 
-      @java.lang.Override
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent build() {
         org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent result = buildPartial();
         if (!result.isInitialized()) {
@@ -1876,7 +1883,7 @@
         return result;
       }
 
-      @java.lang.Override
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent buildPartial() {
         org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent result = new org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent(this);
         int from_bitField0_ = bitField0_;
@@ -1947,39 +1954,39 @@
         return result;
       }
 
-      @java.lang.Override
+      @Override
       public Builder clone() {
         return super.clone();
       }
-      @java.lang.Override
+      @Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
           java.lang.Object value) {
         return super.setField(field, value);
       }
-      @java.lang.Override
+      @Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
         return super.clearField(field);
       }
-      @java.lang.Override
+      @Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
         return super.clearOneof(oneof);
       }
-      @java.lang.Override
+      @Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
           int index, java.lang.Object value) {
         return super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
+      @Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
           java.lang.Object value) {
         return super.addRepeatedField(field, value);
       }
-      @java.lang.Override
+      @Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent) {
           return mergeFrom((org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent)other);
@@ -2059,7 +2066,7 @@
         return this;
       }
 
-      @java.lang.Override
+      @Override
       public final boolean isInitialized() {
         if (!hasEventType()) {
           return false;
@@ -2083,7 +2090,7 @@
         return true;
       }
 
-      @java.lang.Override
+      @Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -2108,14 +2115,14 @@
        * <code>required .prototest.ProtoTestEvent.EventCategory eventType = 1;</code>
        * @return Whether the eventType field is set.
        */
-      @java.lang.Override public boolean hasEventType() {
+      @Override public boolean hasEventType() {
         return ((bitField0_ & 0x00000001) != 0);
       }
       /**
        * <code>required .prototest.ProtoTestEvent.EventCategory eventType = 1;</code>
        * @return The eventType.
        */
-      @java.lang.Override
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory getEventType() {
         @SuppressWarnings("deprecation")
         org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory result = org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.EventCategory.valueOf(eventType_);
@@ -2151,7 +2158,7 @@
        * <code>required uint64 id = 2;</code>
        * @return Whether the id field is set.
        */
-      @java.lang.Override
+      @Override
       public boolean hasId() {
         return ((bitField0_ & 0x00000002) != 0);
       }
@@ -2159,7 +2166,7 @@
        * <code>required uint64 id = 2;</code>
        * @return The id.
        */
-      @java.lang.Override
+      @Override
       public long getId() {
         return id_;
       }
@@ -2190,6 +2197,7 @@
        * <code>required string timestamp = 3;</code>
        * @return Whether the timestamp field is set.
        */
+      @Override
       public boolean hasTimestamp() {
         return ((bitField0_ & 0x00000004) != 0);
       }
@@ -2197,6 +2205,7 @@
        * <code>required string timestamp = 3;</code>
        * @return The timestamp.
        */
+      @Override
       public java.lang.String getTimestamp() {
         java.lang.Object ref = timestamp_;
         if (!(ref instanceof java.lang.String)) {
@@ -2215,6 +2224,7 @@
        * <code>required string timestamp = 3;</code>
        * @return The bytes for timestamp.
        */
+      @Override
       public com.google.protobuf.ByteString
           getTimestampBytes() {
         java.lang.Object ref = timestamp_;
@@ -2274,7 +2284,7 @@
        * <code>optional uint32 someOtherId = 4;</code>
        * @return Whether the someOtherId field is set.
        */
-      @java.lang.Override
+      @Override
       public boolean hasSomeOtherId() {
         return ((bitField0_ & 0x00000008) != 0);
       }
@@ -2282,7 +2292,7 @@
        * <code>optional uint32 someOtherId = 4;</code>
        * @return The someOtherId.
        */
-      @java.lang.Override
+      @Override
       public int getSomeOtherId() {
         return someOtherId_;
       }
@@ -2313,7 +2323,7 @@
        * <code>optional bool isValid = 5;</code>
        * @return Whether the isValid field is set.
        */
-      @java.lang.Override
+      @Override
       public boolean hasIsValid() {
         return ((bitField0_ & 0x00000010) != 0);
       }
@@ -2321,7 +2331,7 @@
        * <code>optional bool isValid = 5;</code>
        * @return The isValid.
        */
-      @java.lang.Override
+      @Override
       public boolean getIsValid() {
         return isValid_;
       }
@@ -2352,6 +2362,7 @@
        * <code>optional string description = 6;</code>
        * @return Whether the description field is set.
        */
+      @Override
       public boolean hasDescription() {
         return ((bitField0_ & 0x00000020) != 0);
       }
@@ -2359,6 +2370,7 @@
        * <code>optional string description = 6;</code>
        * @return The description.
        */
+      @Override
       public java.lang.String getDescription() {
         java.lang.Object ref = description_;
         if (!(ref instanceof java.lang.String)) {
@@ -2377,6 +2389,7 @@
        * <code>optional string description = 6;</code>
        * @return The bytes for description.
        */
+      @Override
       public com.google.protobuf.ByteString
           getDescriptionBytes() {
         java.lang.Object ref = description_;
@@ -2436,7 +2449,7 @@
        * <code>optional float someFloatColumn = 7;</code>
        * @return Whether the someFloatColumn field is set.
        */
-      @java.lang.Override
+      @Override
       public boolean hasSomeFloatColumn() {
         return ((bitField0_ & 0x00000040) != 0);
       }
@@ -2444,7 +2457,7 @@
        * <code>optional float someFloatColumn = 7;</code>
        * @return The someFloatColumn.
        */
-      @java.lang.Override
+      @Override
       public float getSomeFloatColumn() {
         return someFloatColumn_;
       }
@@ -2475,7 +2488,7 @@
        * <code>optional uint32 someIntColumn = 8;</code>
        * @return Whether the someIntColumn field is set.
        */
-      @java.lang.Override
+      @Override
       public boolean hasSomeIntColumn() {
         return ((bitField0_ & 0x00000080) != 0);
       }
@@ -2483,7 +2496,7 @@
        * <code>optional uint32 someIntColumn = 8;</code>
        * @return The someIntColumn.
        */
-      @java.lang.Override
+      @Override
       public int getSomeIntColumn() {
         return someIntColumn_;
       }
@@ -2514,7 +2527,7 @@
        * <code>optional uint64 someLongColumn = 9;</code>
        * @return Whether the someLongColumn field is set.
        */
-      @java.lang.Override
+      @Override
       public boolean hasSomeLongColumn() {
         return ((bitField0_ & 0x00000100) != 0);
       }
@@ -2522,7 +2535,7 @@
        * <code>optional uint64 someLongColumn = 9;</code>
        * @return The someLongColumn.
        */
-      @java.lang.Override
+      @Override
       public long getSomeLongColumn() {
         return someLongColumn_;
       }
@@ -2555,6 +2568,7 @@
        * <code>optional .prototest.ProtoTestEvent.Foo foo = 10;</code>
        * @return Whether the foo field is set.
        */
+      @Override
       public boolean hasFoo() {
         return ((bitField0_ & 0x00000200) != 0);
       }
@@ -2562,6 +2576,7 @@
        * <code>optional .prototest.ProtoTestEvent.Foo foo = 10;</code>
        * @return The foo.
        */
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo getFoo() {
         if (fooBuilder_ == null) {
           return foo_ == null ? org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo.getDefaultInstance() : foo_;
@@ -2643,6 +2658,7 @@
       /**
        * <code>optional .prototest.ProtoTestEvent.Foo foo = 10;</code>
        */
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.FooOrBuilder getFooOrBuilder() {
         if (fooBuilder_ != null) {
           return fooBuilder_.getMessageOrBuilder();
@@ -2683,6 +2699,7 @@
       /**
        * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
        */
+      @Override
       public java.util.List<org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo> getBarList() {
         if (barBuilder_ == null) {
           return java.util.Collections.unmodifiableList(bar_);
@@ -2693,6 +2710,7 @@
       /**
        * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
        */
+      @Override
       public int getBarCount() {
         if (barBuilder_ == null) {
           return bar_.size();
@@ -2703,6 +2721,7 @@
       /**
        * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
        */
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.Foo getBar(int index) {
         if (barBuilder_ == null) {
           return bar_.get(index);
@@ -2853,6 +2872,7 @@
       /**
        * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
        */
+      @Override
       public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.FooOrBuilder getBarOrBuilder(
           int index) {
         if (barBuilder_ == null) {
@@ -2863,7 +2883,8 @@
       /**
        * <code>repeated .prototest.ProtoTestEvent.Foo bar = 11;</code>
        */
-      public java.util.List<? extends org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.FooOrBuilder> 
+      @Override
+      public java.util.List<? extends org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent.FooOrBuilder>
            getBarOrBuilderList() {
         if (barBuilder_ != null) {
           return barBuilder_.getMessageOrBuilderList();
@@ -2915,6 +2936,7 @@
        * <code>optional .google.protobuf.Timestamp otherTimestamp = 12;</code>
        * @return Whether the otherTimestamp field is set.
        */
+      @Override
       public boolean hasOtherTimestamp() {
         return ((bitField0_ & 0x00000800) != 0);
       }
@@ -2922,6 +2944,7 @@
        * <code>optional .google.protobuf.Timestamp otherTimestamp = 12;</code>
        * @return The otherTimestamp.
        */
+      @Override
       public com.google.protobuf.Timestamp getOtherTimestamp() {
         if (otherTimestampBuilder_ == null) {
           return otherTimestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : otherTimestamp_;
@@ -3003,6 +3026,7 @@
       /**
        * <code>optional .google.protobuf.Timestamp otherTimestamp = 12;</code>
        */
+      @Override
       public com.google.protobuf.TimestampOrBuilder getOtherTimestampOrBuilder() {
         if (otherTimestampBuilder_ != null) {
           return otherTimestampBuilder_.getMessageOrBuilder();
@@ -3027,13 +3051,13 @@
         }
         return otherTimestampBuilder_;
       }
-      @java.lang.Override
+      @Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return super.setUnknownFields(unknownFields);
       }
 
-      @java.lang.Override
+      @Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return super.mergeUnknownFields(unknownFields);
@@ -3055,7 +3079,7 @@
 
     @java.lang.Deprecated public static final com.google.protobuf.Parser<ProtoTestEvent>
         PARSER = new com.google.protobuf.AbstractParser<ProtoTestEvent>() {
-      @java.lang.Override
+      @Override
       public ProtoTestEvent parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -3068,12 +3092,12 @@
       return PARSER;
     }
 
-    @java.lang.Override
+    @Override
     public com.google.protobuf.Parser<ProtoTestEvent> getParserForType() {
       return PARSER;
     }
 
-    @java.lang.Override
+    @Override
     public org.apache.druid.data.input.protobuf.ProtoTestEventWrapper.ProtoTestEvent getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java
index 11339d4..f593f7c 100644
--- a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java
+++ b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java
@@ -2186,7 +2186,7 @@
             taskGroupId
         );
 
-        newlyDiscovered.computeIfAbsent(taskGroupId, ArrayList::new).add(partitionId);
+        newlyDiscovered.computeIfAbsent(taskGroupId, k -> new ArrayList<>()).add(partitionId);
       }
     }
 
diff --git a/licenses.yaml b/licenses.yaml
index 87b8b76..6afc386 100644
--- a/licenses.yaml
+++ b/licenses.yaml
@@ -350,7 +350,7 @@
 license_category: binary
 module: java-core
 license_name: Apache License version 2.0
-version: 2.3.2
+version: 2.7.1
 libraries:
   - com.google.errorprone: error_prone_annotations
 
diff --git a/pom.xml b/pom.xml
index 3022069..70ce5cc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,6 +87,7 @@
         <datasketches.memory.version>1.3.0</datasketches.memory.version>
         <derby.version>10.14.2.0</derby.version>
         <dropwizard.metrics.version>4.0.0</dropwizard.metrics.version>
+        <errorprone.version>2.7.1</errorprone.version>
         <fastutil.version>8.5.4</fastutil.version>
         <guava.version>16.0.1</guava.version>
         <guice.version>4.1.0</guice.version>
@@ -420,7 +421,7 @@
             <dependency>
                 <groupId>com.google.errorprone</groupId>
                 <artifactId>error_prone_annotations</artifactId>
-                <version>2.3.2</version>
+                <version>${errorprone.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.ibm.icu</groupId>
@@ -1777,17 +1778,20 @@
                     </plugin>
                 </plugins>
             </build>
-        </profile>
-        <profile>
+          </profile>
+          <profile>
             <id>strict</id>
+            <activation>
+              <property>
+                <name>strictCompile</name>
+              </property>
+            </activation>
             <build>
                 <plugins>
                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-compiler-plugin</artifactId>
                         <configuration>
-                            <compilerId>javac-with-errorprone</compilerId>
-                            <forceJavacCompilerUse>true</forceJavacCompilerUse>
                             <fork>true</fork>
                             <meminitial>1024m</meminitial>
                             <maxmem>3000m</maxmem>
@@ -1795,58 +1799,81 @@
                             <target>${maven.compiler.target}</target>
                             <showWarnings>false</showWarnings>
                             <compilerArgs>
-                                <arg>-XepDisableWarningsInGeneratedCode</arg>
-
-                                <arg>-Xep:ClassCanBeStatic:ERROR</arg>
-                                <arg>-Xep:PreconditionsInvalidPlaceholder:ERROR</arg>
-                                <arg>-Xep:MissingOverride:ERROR</arg>
-                                <arg>-Xep:DefaultCharset:ERROR</arg>
-                                <arg>-Xep:QualifierOrScopeOnInjectMethod:ERROR</arg>
-
-                                <arg>-Xep:AssistedInjectAndInjectOnSameConstructor</arg>
-                                <arg>-Xep:AutoFactoryAtInject</arg>
-                                <arg>-Xep:ClassName</arg>
-                                <arg>-Xep:ComparisonContractViolated</arg>
-                                <arg>-Xep:DepAnn</arg>
-                                <arg>-Xep:DivZero</arg>
-                                <arg>-Xep:EmptyIf</arg>
-                                <arg>-Xep:InjectInvalidTargetingOnScopingAnnotation</arg>
-                                <arg>-Xep:InjectMoreThanOneQualifier</arg>
-                                <arg>-Xep:InjectScopeAnnotationOnInterfaceOrAbstractClass</arg>
-                                <arg>-Xep:InjectScopeOrQualifierAnnotationRetention</arg>
-                                <arg>-Xep:InjectedConstructorAnnotations</arg>
-                                <arg>-Xep:InsecureCryptoUsage</arg>
-                                <arg>-Xep:JMockTestWithoutRunWithOrRuleAnnotation</arg>
-                                <arg>-Xep:JavaxInjectOnFinalField</arg>
-                                <arg>-Xep:LockMethodChecker</arg>
-                                <arg>-Xep:LongLiteralLowerCaseSuffix</arg>
-                                <arg>-Xep:NoAllocation</arg>
-                                <arg>-Xep:NonRuntimeAnnotation</arg>
-                                <arg>-Xep:NumericEquality</arg>
-                                <arg>-Xep:ParameterPackage</arg>
-                                <arg>-Xep:ProtoStringFieldReferenceEquality</arg>
-                                <arg>-Xep:UnlockMethod</arg>
-                            </compilerArgs>
+                                <arg>-XDcompilePolicy=simple</arg>
+                                <!-- disable LongFloatConversion until https://github.com/google/error-prone/issues/2396 is fixed -->
+                                <arg>-Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-(test-)?sources/.* -XepDisableWarningsInGeneratedCode -Xep:ClassCanBeStatic:ERROR -Xep:PreconditionsInvalidPlaceholder:ERROR -Xep:MissingOverride:ERROR -Xep:DefaultCharset:ERROR -Xep:QualifierOrScopeOnInjectMethod:ERROR -Xep:AssistedInjectAndInjectOnSameConstructor -Xep:AutoFactoryAtInject -Xep:ClassName -Xep:ComparisonContractViolated -Xep:DepAnn -Xep:DivZero -Xep:EmptyIf -Xep:InjectInvalidTargetingOnScopingAnnotation  -Xep:InjectMoreThanOneQualifier -Xep:InjectScopeAnnotationOnInterfaceOrAbstractClass -Xep:InjectScopeOrQualifierAnnotationRetention -Xep:InjectedConstructorAnnotations -Xep:InsecureCryptoUsage -Xep:JMockTestWithoutRunWithOrRuleAnnotation -Xep:JavaxInjectOnFinalField -Xep:LockMethodChecker -Xep:LongLiteralLowerCaseSuffix -Xep:NoAllocation -Xep:NonRuntimeAnnotation -Xep:NumericEquality -Xep:ProtoStringFieldReferenceEquality -Xep:UnlockMethod -Xep:LongFloatConversion:OFF</arg>
+                              </compilerArgs>
+                              <annotationProcessorPaths>
+                                <path>
+                                  <groupId>com.google.errorprone</groupId>
+                                  <artifactId>error_prone_core</artifactId>
+                                  <version>${errorprone.version}</version>
+                                </path>
+                              </annotationProcessorPaths>
                         </configuration>
-                        <dependencies>
-                            <dependency>
-                                <groupId>org.codehaus.plexus</groupId>
-                                <artifactId>plexus-compiler-javac-errorprone</artifactId>
-                                <version>2.8.5</version>
-                            </dependency>
-                            <!-- override plexus-compiler-javac-errorprone's dependency on
-                                 Error Prone with the latest version -->
-                            <dependency>
-                                <groupId>com.google.errorprone</groupId>
-                                <artifactId>error_prone_core</artifactId>
-                                <version>2.3.2</version>
-                            </dependency>
-                        </dependencies>
                     </plugin>
                 </plugins>
             </build>
         </profile>
         <profile>
+          <id>strict-java-15+</id>
+          <activation>
+            <jdk>[15,)</jdk>
+            <property>
+              <name>strictCompile</name>
+            </property>
+          </activation>
+          <build>
+            <plugins>
+              <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                  <release>${java.version}</release>
+                  <compilerArgs combine.children="append">
+                    <!-- Error Prone requires exemptions for Java 16, see https://errorprone.info/docs/installation#jdk-16 -->
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
+                    <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
+                    <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
+                    <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
+                  </compilerArgs>
+                </configuration>
+              </plugin>
+            </plugins>
+          </build>
+        </profile>
+        <!-- using github.com/google/error-prone-javac is required when running on JDK 8
+             see https://errorprone.info/docs/installation#jdk-8 -->
+        <profile>
+          <id>strict-java-8</id>
+          <activation>
+            <jdk>1.8</jdk>
+            <property>
+              <name>strictCompile</name>
+            </property>
+          </activation>
+          <build>
+            <plugins>
+              <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                  <fork>true</fork>
+                  <compilerArgs combine.children="append">
+                    <arg>-J-Xbootclasspath/p:${settings.localRepository}/com/google/errorprone/javac/9+181-r4173-1/javac-9+181-r4173-1.jar</arg>
+                  </compilerArgs>
+                </configuration>
+              </plugin>
+            </plugins>
+          </build>
+        </profile>
+        <profile>
             <id>parallel-test</id>
             <activation>
                 <activeByDefault>false</activeByDefault>
diff --git a/processing/pom.xml b/processing/pom.xml
index 646857e..4f05d4f 100644
--- a/processing/pom.xml
+++ b/processing/pom.xml
@@ -257,14 +257,16 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
-                    <annotationProcessorPaths>
+                    <!-- keep annotation processor paths defined in parent pom -->
+                    <annotationProcessorPaths combine.children="append">
                         <path>
                             <groupId>org.apache.druid</groupId>
                             <artifactId>druid-core</artifactId>
                             <version>${project.parent.version}</version>
                         </path>
                     </annotationProcessorPaths>
-                    <annotationProcessors>
+                    <!-- keep annotation processors defined in parent pom -->
+                    <annotationProcessors combine.children="append">
                         <annotationProcessor>org.apache.druid.annotations.SubclassesMustBePublicAnnotationProcessor</annotationProcessor>
                     </annotationProcessors>
                 </configuration>
diff --git a/processing/src/main/java/org/apache/druid/query/filter/InDimFilter.java b/processing/src/main/java/org/apache/druid/query/filter/InDimFilter.java
index adba7f8..0cae9809 100644
--- a/processing/src/main/java/org/apache/druid/query/filter/InDimFilter.java
+++ b/processing/src/main/java/org/apache/druid/query/filter/InDimFilter.java
@@ -526,6 +526,7 @@
     };
   }
 
+  @SuppressWarnings("ReturnValueIgnored")
   private static Predicate<String> createStringPredicate(final Set<String> values)
   {
     Preconditions.checkNotNull(values, "values");
@@ -536,8 +537,6 @@
       // programmatically as a result of optimizations like rewriting inner joins as filters, the passed-in Set may
       // not be able to accept nulls. We don't want to copy the Sets (since they may be large) so instead we'll wrap
       // it in a null-checking lambda if needed.
-
-      //noinspection ResultOfMethodCallIgnored
       values.contains(null);
 
       // Safe to do values.contains(null).
diff --git a/processing/src/main/java/org/apache/druid/query/groupby/orderby/DefaultLimitSpec.java b/processing/src/main/java/org/apache/druid/query/groupby/orderby/DefaultLimitSpec.java
index da6fea6..a9fc3fe 100644
--- a/processing/src/main/java/org/apache/druid/query/groupby/orderby/DefaultLimitSpec.java
+++ b/processing/src/main/java/org/apache/druid/query/groupby/orderby/DefaultLimitSpec.java
@@ -520,7 +520,7 @@
    * This API works by "creative" use of equals. It requires warnings to be suppressed and also requires spotbugs
    * exclusions (see spotbugs-exclude.xml).
    */
-  @SuppressWarnings("EqualsAndHashcode")
+  @SuppressWarnings({"EqualsAndHashcode", "EqualsHashCode"})
   static class LimitJsonIncludeFilter // lgtm [java/inconsistent-equals-and-hashcode]
   {
     @Override
diff --git a/processing/src/main/java/org/apache/druid/query/scan/ScanQuery.java b/processing/src/main/java/org/apache/druid/query/scan/ScanQuery.java
index 067bdff..b339a89 100644
--- a/processing/src/main/java/org/apache/druid/query/scan/ScanQuery.java
+++ b/processing/src/main/java/org/apache/druid/query/scan/ScanQuery.java
@@ -427,7 +427,7 @@
    * This API works by "creative" use of equals. It requires warnings to be suppressed and also requires spotbugs
    * exclusions (see spotbugs-exclude.xml).
    */
-  @SuppressWarnings({"EqualsAndHashcode"})
+  @SuppressWarnings({"EqualsAndHashcode", "EqualsHashCode"})
   static class ScanRowsLimitJsonIncludeFilter // lgtm [java/inconsistent-equals-and-hashcode]
   {
     @Override
diff --git a/processing/src/test/java/org/apache/druid/query/lookup/LookupExtractorFactoryContainerTest.java b/processing/src/test/java/org/apache/druid/query/lookup/LookupExtractorFactoryContainerTest.java
index 875af6a..500093f 100644
--- a/processing/src/test/java/org/apache/druid/query/lookup/LookupExtractorFactoryContainerTest.java
+++ b/processing/src/test/java/org/apache/druid/query/lookup/LookupExtractorFactoryContainerTest.java
@@ -111,6 +111,7 @@
     }
 
     @Override
+    @SuppressWarnings("EqualsHashCode")
     public boolean equals(Object other)
     {
       return other instanceof TestLookupExtractorFactory;
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/SinkQuerySegmentWalker.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/SinkQuerySegmentWalker.java
index 783a327..6097857 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/SinkQuerySegmentWalker.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/SinkQuerySegmentWalker.java
@@ -152,9 +152,9 @@
     final DataSourceAnalysis analysis = DataSourceAnalysis.forDataSource(query.getDataSource());
 
     // Sanity check: make sure the query is based on the table we're meant to handle.
-    analysis.getBaseTableDataSource()
-            .filter(ds -> dataSource.equals(ds.getName()))
-            .orElseThrow(() -> new ISE("Cannot handle datasource: %s", analysis.getDataSource()));
+    if (!analysis.getBaseTableDataSource().filter(ds -> dataSource.equals(ds.getName())).isPresent()) {
+      throw new ISE("Cannot handle datasource: %s", analysis.getDataSource());
+    }
 
     final QueryRunnerFactory<T, Query<T>> factory = conglomerate.findFactory(query);
     if (factory == null) {
diff --git a/server/src/main/java/org/apache/druid/server/coordinator/HttpLoadQueuePeon.java b/server/src/main/java/org/apache/druid/server/coordinator/HttpLoadQueuePeon.java
index f00e5aa..4a171e5 100644
--- a/server/src/main/java/org/apache/druid/server/coordinator/HttpLoadQueuePeon.java
+++ b/server/src/main/java/org/apache/druid/server/coordinator/HttpLoadQueuePeon.java
@@ -324,7 +324,7 @@
 
       ScheduledExecutors.scheduleAtFixedRate(
           processingExecutor,
-          new Duration(config.getHttpLoadQueuePeonRepeatDelay()),
+          config.getHttpLoadQueuePeonRepeatDelay(),
           () -> {
             if (!stopped) {
               doSegmentManagement();
diff --git a/server/src/test/java/org/apache/druid/segment/loading/StorageLocationTest.java b/server/src/test/java/org/apache/druid/segment/loading/StorageLocationTest.java
index b50498b..5048f77 100644
--- a/server/src/test/java/org/apache/druid/segment/loading/StorageLocationTest.java
+++ b/server/src/test/java/org/apache/druid/segment/loading/StorageLocationTest.java
@@ -47,6 +47,7 @@
   public TemporaryFolder temporaryFolder = new TemporaryFolder();
 
   @Test
+  @SuppressWarnings("GuardedBy")
   public void testStorageLocationFreePercent()
   {
     // free space ignored only maxSize matters
@@ -66,6 +67,7 @@
   }
 
   @Test
+  @SuppressWarnings("GuardedBy")
   public void testStorageLocationRealFileSystem() throws IOException
   {
     File file = temporaryFolder.newFolder();
@@ -181,6 +183,7 @@
     Assert.assertFalse(loc.release("testPath", 100L));
   }
 
+  @SuppressWarnings("GuardedBy")
   private void verifyLoc(long maxSize, StorageLocation loc)
   {
     Assert.assertEquals(maxSize, loc.availableSizeBytes());