Index: /trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 7795)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 7796)
@@ -475,5 +475,5 @@
 
     @Override
-    public void setDataset(DataSet dataSet) {
+    void setDataset(DataSet dataSet) {
         super.setDataset(dataSet);
         checkMembers();
Index: /trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 7795)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 7796)
@@ -619,5 +619,5 @@
 
     @Override
-    public void setDataset(DataSet dataSet) {
+    void setDataset(DataSet dataSet) {
         super.setDataset(dataSet);
         checkNodes();
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 7795)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 7796)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
@@ -533,5 +534,5 @@
      */
     public synchronized Collection<TestError> getErrorsForPrimitive(OsmPrimitive p, boolean includeOtherSeverity) {
-        final ArrayList<TestError> r = new ArrayList<>();
+        final List<TestError> r = new ArrayList<>();
         final Environment env = new Environment(p, new MultiCascade(), Environment.DEFAULT_LAYER, null);
         for (Set<TagCheck> schecks : checks.values()) {
@@ -628,4 +629,5 @@
     public Set<String> checkAsserts(final Collection<TagCheck> schecks) {
         Set<String> assertionErrors = new LinkedHashSet<>();
+        final DataSet ds = new DataSet();
         for (final TagCheck check : schecks) {
             if (Main.isDebugEnabled()) {
@@ -637,4 +639,6 @@
                 }
                 final OsmPrimitive p = OsmUtils.createPrimitive(i.getKey());
+                // Add primitive to dataset to avoid DataIntegrityProblemException when evaluating selectors
+                ds.addPrimitive(p);
                 final boolean isError = Utils.exists(getErrorsForPrimitive(p, true), new Predicate<TestError>() {
                     @Override
@@ -649,4 +653,5 @@
                     assertionErrors.add(error);
                 }
+                ds.removePrimitive(p);
             }
         }
