Index: src/org/openstreetmap/josm/data/validation/Test.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/Test.java	(revision 15462)
+++ src/org/openstreetmap/josm/data/validation/Test.java	(working copy)
@@ -7,7 +7,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Objects;
 import java.util.Optional;
 import java.util.function.Predicate;
 
@@ -38,7 +37,7 @@
  *
  * @author frsantos
  */
-public class Test implements OsmPrimitiveVisitor, Comparable<Test> {
+public class Test implements OsmPrimitiveVisitor {
 
     protected static final Predicate<OsmPrimitive> IN_DOWNLOADED_AREA = new NotOutsideDataSourceArea();
     protected static final Predicate<OsmPrimitive> IN_DOWNLOADED_AREA_STRICT = new InDataSourceArea(true);
@@ -364,25 +363,6 @@
         return p.hasTag("landuse", "residential");
     }
 
-    @Override
-    public int hashCode() {
-        return Objects.hash(name, description);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) return true;
-        if (obj == null || getClass() != obj.getClass()) return false;
-        Test test = (Test) obj;
-        return Objects.equals(name, test.name) &&
-               Objects.equals(description, test.description);
-    }
-
-    @Override
-    public int compareTo(Test t) {
-        return name.compareTo(t.name);
-    }
-
     /**
      * Free resources.
      */
Index: src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 15462)
+++ src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(working copy)
@@ -681,18 +681,6 @@
         }
 
         @Override
-        public synchronized boolean equals(Object obj) {
-            return super.equals(obj)
-                    || (obj instanceof TagCheck && rule.equals(((TagCheck) obj).rule))
-                    || (obj instanceof GroupedMapCSSRule && rule.equals(obj));
-        }
-
-        @Override
-        public synchronized int hashCode() {
-            return Objects.hash(super.hashCode(), rule);
-        }
-
-        @Override
         public String toString() {
             return "MapCSSTagCheckerAndRule [rule=" + rule + ']';
         }
@@ -929,8 +917,8 @@
                 addPrimitive(ds, p);
                 final Collection<TestError> pErrors = getErrorsForPrimitive(p, true, checksToRun);
                 Logging.debug("- Errors: {0}", pErrors);
-                @SuppressWarnings({"EqualsBetweenInconvertibleTypes", "EqualsIncompatibleType"})
-                final boolean isError = pErrors.stream().anyMatch(e -> e.getTester().equals(check.rule));
+                final boolean isError = pErrors.stream().anyMatch(e -> e.getTester() instanceof MapCSSTagCheckerAndRule
+                        && ((MapCSSTagCheckerAndRule) e.getTester()).rule.equals(check.rule));
                 if (isError != i.getValue()) {
                     assertionErrors.add(MessageFormat.format("Expecting test ''{0}'' (i.e., {1}) to {2} {3} (i.e., {4})",
                             check.getMessage(p), check.rule.selectors, i.getValue() ? "match" : "not match", i.getKey(), p.getKeys()));
@@ -958,20 +946,6 @@
         ds.addPrimitive(p);
     }
 
-    @Override
-    public synchronized int hashCode() {
-        return Objects.hash(super.hashCode(), checks);
-    }
-
-    @Override
-    public synchronized boolean equals(Object obj) {
-        if (this == obj) return true;
-        if (obj == null || getClass() != obj.getClass()) return false;
-        if (!super.equals(obj)) return false;
-        MapCSSTagChecker that = (MapCSSTagChecker) obj;
-        return Objects.equals(checks, that.checks);
-    }
-
     /**
      * Reload tagchecker rule.
      * @param rule tagchecker rule to reload
Index: src/org/openstreetmap/josm/data/validation/tests/SharpAngles.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/SharpAngles.java	(revision 15462)
+++ src/org/openstreetmap/josm/data/validation/tests/SharpAngles.java	(working copy)
@@ -5,7 +5,6 @@
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Objects;
 import java.util.TreeSet;
 
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -151,20 +150,4 @@
         maxAngle = angle;
     }
 
-    @Override
-    public int hashCode() {
-        return 31 * super.hashCode() + Objects.hash(ignoreHighways, maxAngle, maxLength);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (!super.equals(obj) || getClass() != obj.getClass())
-            return false;
-        SharpAngles other = (SharpAngles) obj;
-        return Objects.equals(ignoreHighways, other.ignoreHighways)
-                && Double.doubleToLongBits(maxAngle) == Double.doubleToLongBits(other.maxAngle)
-                && Double.doubleToLongBits(maxLength) == Double.doubleToLongBits(other.maxLength);
-    }
 }
