Index: trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 3273)
+++ trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 3274)
@@ -34,8 +34,9 @@
 
     public void checkReferrers() {
+        // It's also error when referred primitive's dataset is null but it's already covered by referredPrimitiveNotInDataset check
         for (Way way:dataSet.getWays()) {
             if (!way.isDeleted()) {
                 for (Node n:way.getNodes()) {
-                    if (!n.getReferrers().contains(way)) {
+                    if (n.getDataSet() != null && !n.getReferrers().contains(way)) {
                         printError("WAY NOT IN REFERRERS", "%s is part of %s but is not in referrers", n, way);
                     }
@@ -47,5 +48,5 @@
             if (!relation.isDeleted()) {
                 for (RelationMember m:relation.getMembers()) {
-                    if (!m.getMember().getReferrers().contains(relation)) {
+                    if (m.getMember().getDataSet() != null && !m.getMember().getReferrers().contains(relation)) {
                         printError("RELATION NOT IN REFERRERS", "%s is part of %s but is not in referrers", m.getMember(), relation);
                     }
@@ -96,10 +97,12 @@
 
     private void checkReferredPrimitive(OsmPrimitive primitive, OsmPrimitive parent) {
-        if (dataSet.getPrimitiveById(primitive) == null) {
+        if (primitive.getDataSet() == null) {
+            printError("NO DATASET", "%s is referenced by %s but not found in dataset", primitive, parent);
+        } else if (dataSet.getPrimitiveById(primitive) == null) {
             printError("REFERENCED BUT NOT IN DATA", "%s is referenced by %s but not found in dataset", primitive, parent);
-        }
-        if (dataSet.getPrimitiveById(primitive) != primitive) {
+        } else  if (dataSet.getPrimitiveById(primitive) != primitive) {
             printError("DIFFERENT INSTANCE", "%s is different instance that referred by %s", primitive, parent);
         }
+
         if (primitive.isDeleted()) {
             printError("DELETED REFERENCED", "%s refers to deleted primitive %s", parent, primitive);
@@ -134,4 +137,5 @@
     public void runTest() {
         try {
+            referredPrimitiveNotInDataset();
             checkReferrers();
             checkCompleteWaysWithIncompleteNodes();
@@ -139,5 +143,4 @@
             searchNodes();
             searchWays();
-            referredPrimitiveNotInDataset();
             checkZeroNodesWays();
             if (errorCount > MAX_ERRORS) {
