diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.ts b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.ts
index 9e16fc0..4180c8c 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.ts
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.ts
@@ -548,13 +548,7 @@
 
   private renderChangeHasLabelIcon(labelName: string) {
     if (showNewSubmitRequirements(this.flagsService, this.change)) {
-      let requirements = getRequirements(this.change).filter(
-        sr => sr.name === labelName
-      );
-      // TODO(milutin): Remove this after migration from legacy requirements.
-      if (requirements.length > 1) {
-        requirements = requirements.filter(sr => !sr.is_legacy);
-      }
+      const requirements = this.getRequirement(labelName);
       if (requirements.length === 1) {
         const icon = iconForStatus(requirements[0].status);
         return html`<iron-icon
@@ -619,9 +613,7 @@
   computeLabelClass(labelName: string) {
     const classes = ['cell', 'label'];
     if (showNewSubmitRequirements(this.flagsService, this.change)) {
-      const requirements = getRequirements(this.change).filter(
-        sr => sr.name === labelName
-      );
+      const requirements = this.getRequirement(labelName);
       if (requirements.length === 1) {
         classes.push('requirement');
         // Do not add label category classes.
@@ -909,4 +901,16 @@
     const isLast = index === primaryCount - 1;
     return isLast && additionalCount === 0;
   }
+
+  private getRequirement(labelName: string) {
+    const requirements = getRequirements(this.change).filter(
+      sr => sr.name === labelName
+    );
+    // TODO(milutin): Remove this after migration from legacy requirements.
+    if (requirements.length > 1) {
+      return requirements.filter(sr => !sr.is_legacy);
+    } else {
+      return requirements;
+    }
+  }
 }
diff --git a/tools/BUILD b/tools/BUILD
index 04375f9..08c4829 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -6,51 +6,13 @@
 
 exports_files(["nongoogle.bzl"])
 
-JDK11_JVM_OPTS = select({
-    "@bazel_tools//src/conditions:openbsd": ["-Xbootclasspath/p:$(location @bazel_tools//tools/jdk:javac_jar)"],
-    "//conditions:default": [
-        "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
-        "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
-        "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED",
-        "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
-        "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
-        "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
-        "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
-        "--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
-        "--patch-module=java.compiler=$(location @bazel_tools//tools/jdk:java_compiler_jar)",
-        "--patch-module=jdk.compiler=$(location @bazel_tools//tools/jdk:jdk_compiler_jar)",
-        "--add-opens=java.base/java.nio=ALL-UNNAMED",
-        "--add-opens=java.base/java.lang=ALL-UNNAMED",
-    ],
-})
-
 default_java_toolchain(
     name = "error_prone_warnings_toolchain_java11",
-    bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath.jar"],
-    forcibly_disable_header_compilation = False,
-    genclass = ["@bazel_tools//tools/jdk:genclass"],
-    header_compiler = ["@bazel_tools//tools/jdk:turbine"],
-    header_compiler_direct = ["@bazel_tools//tools/jdk:turbine_direct"],
-    ijar = ["@bazel_tools//tools/jdk:ijar"],
-    javabuilder = ["@bazel_tools//tools/jdk:javabuilder"],
-    javac_supports_workers = True,
-    jvm_opts = JDK11_JVM_OPTS,
-    misc = [
-        "-XDskipDuplicateBridges=true",
-        "-g",
-        "-parameters",
-    ],
     package_configuration = [
         ":error_prone",
     ],
-    singlejar = ["@bazel_tools//tools/jdk:singlejar"],
     source_version = "11",
     target_version = "11",
-    tools = [
-        "@bazel_tools//tools/jdk:java_compiler_jar",
-        "@bazel_tools//tools/jdk:javac_jar",
-        "@bazel_tools//tools/jdk:jdk_compiler_jar",
-    ],
     visibility = ["//visibility:public"],
 )
 
