Index: /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 8910)
@@ -22,5 +22,5 @@
  */
 public class ConflictAddCommand extends Command {
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /**
@@ -61,5 +61,5 @@
     @Override
     public void undoCommand() {
-        if (!Main.map.mapView.hasLayer(getLayer())) {
+        if (Main.map != null && !Main.map.mapView.hasLayer(getLayer())) {
             Main.warn(tr("Layer ''{0}'' does not exist any more. Cannot remove conflict for object ''{1}''.",
                     getLayer().getName(),
Index: /trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java	(revision 8910)
@@ -20,5 +20,5 @@
 public abstract class ConflictResolveCommand extends Command {
     /** the list of resolved conflicts */
-    private ConflictCollection resolvedConflicts;
+    private final ConflictCollection resolvedConflicts;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommand.java	(revision 8910)
@@ -21,5 +21,5 @@
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /** the merge decision */
Index: /trunk/src/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommand.java	(revision 8910)
@@ -21,5 +21,5 @@
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /** the merge decision */
Index: /trunk/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java	(revision 8910)
@@ -22,5 +22,5 @@
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java	(revision 8910)
@@ -22,5 +22,5 @@
 public class TagConflictResolveCommand extends ConflictResolveCommand {
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /** the list of merge decisions, represented as {@link TagMergeItem}s */
Index: /trunk/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java	(revision 8910)
@@ -22,5 +22,5 @@
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java	(revision 8910)
@@ -22,5 +22,5 @@
 public class WayNodesConflictResolverCommand extends ConflictResolveCommand {
     /** the conflict to resolve */
-    private Conflict<Way> conflict;
+    private final Conflict<Way> conflict;
 
     /** the list of merged nodes. This becomes the list of news of my way after the
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 8909)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 8910)
@@ -89,4 +89,5 @@
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.FilteredCollection;
 import org.openstreetmap.josm.tools.GBC;
@@ -246,5 +247,5 @@
      */
     public static Color getBackgroundColor() {
-        return Main.pref.getColor(marktr("background"), Color.BLACK);
+        return Main.pref != null ? Main.pref.getColor(marktr("background"), Color.BLACK) : Color.BLACK;
     }
 
@@ -254,5 +255,5 @@
      */
     public static Color getOutsideColor() {
-        return Main.pref.getColor(marktr("outside downloaded area"), Color.YELLOW);
+        return Main.pref != null ? Main.pref.getColor(marktr("outside downloaded area"), Color.YELLOW) : Color.YELLOW;
     }
 
@@ -281,4 +282,5 @@
     public OsmDataLayer(final DataSet data, final String name, final File associatedFile) {
         super(name);
+        CheckParameterUtil.ensureParameterNotNull(data, "data");
         this.data = data;
         this.setAssociatedFile(associatedFile);
Index: /trunk/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java	(revision 8910)
+++ /trunk/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java	(revision 8910)
@@ -0,0 +1,33 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.command.conflict;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * Unit tests of {@link ConflictAddCommand} class.
+ */
+public class ConflictAddCommandTest {
+
+    /**
+     * Unit test of {@code ConflictAddCommand#executeCommand} and {@code ConflictAddCommand#undoCommand} methods.
+     */
+    @Test
+    public void testExecuteUndoCommand() {
+        OsmDataLayer layer = new OsmDataLayer(new DataSet(), null, null);
+        Conflict<OsmPrimitive> conflict = new Conflict<>(null, null);
+        ConflictAddCommand cmd = new ConflictAddCommand(layer, conflict);
+        assertTrue(cmd.executeCommand());
+        assertFalse(layer.getConflicts().isEmpty());
+        assertTrue(layer.getConflicts().hasConflict(conflict));
+        cmd.undoCommand();
+        assertFalse(layer.getConflicts().hasConflict(conflict));
+        assertTrue(layer.getConflicts().isEmpty());
+    }
+}
