Index: trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 10250)
@@ -441,6 +441,6 @@
         private final Set<NodePair> edges;
         private int numUndirectedEges;
-        private Map<Node, List<NodePair>> successors;
-        private Map<Node, List<NodePair>> predecessors;
+        private final Map<Node, List<NodePair>> successors = new LinkedHashMap<>();
+        private final Map<Node, List<NodePair>> predecessors = new LinkedHashMap<>();
 
         protected void rememberSuccessor(NodePair pair) {
@@ -482,6 +482,6 @@
         protected void prepare() {
             Set<NodePair> undirectedEdges = new LinkedHashSet<>();
-            successors = new LinkedHashMap<>();
-            predecessors = new LinkedHashMap<>();
+            successors.clear();
+            predecessors.clear();
 
             for (NodePair pair: edges) {
Index: trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 10250)
@@ -420,8 +420,8 @@
      */
     private static class WayData {
-        public final List<Node> wayNodes;             // The assigned way
-        public final int nSeg;            // Number of Segments of the Way
-        public final int nNode;           // Number of Nodes of the Way
-        public Direction[] segDirections; // Direction of the segments
+        public final List<Node> wayNodes;       // The assigned way
+        public final int nSeg;                  // Number of Segments of the Way
+        public final int nNode;                 // Number of Nodes of the Way
+        public final Direction[] segDirections; // Direction of the segments
         // segment i goes from node i to node (i+1)
         public EastNorth segSum;          // (Vector-)sum of all horizontal segments plus the sum of all vertical
@@ -433,4 +433,5 @@
             this.nNode = wayNodes.size();
             this.nSeg = nNode - 1;
+            this.segDirections = new Direction[nSeg];
         }
 
@@ -448,5 +449,4 @@
                 en[i] = wayNodes.get(i).getEastNorth();
             }
-            segDirections = new Direction[nSeg];
             Direction direction = pInitialDirection;
             segDirections[0] = direction;
Index: trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(revision 10250)
@@ -120,6 +120,6 @@
     private static final class OverpassDownloadDialog extends DownloadDialog {
 
-        private HistoryComboBox overpassWizard;
-        private JosmTextArea overpassQuery;
+        private final HistoryComboBox overpassWizard = new HistoryComboBox();
+        private final JosmTextArea overpassQuery = new JosmTextArea("", 8, 80);
         private static OverpassDownloadDialog instance;
         private static final CollectionProperty OVERPASS_WIZARD_HISTORY = new CollectionProperty("download.overpass.wizard",
@@ -151,5 +151,4 @@
 
             final String tooltip = tr("Builds an Overpass query using the Overpass Turbo query wizard");
-            overpassWizard = new HistoryComboBox();
             overpassWizard.setToolTipText(tooltip);
             overpassWizard.getEditorComponent().addFocusListener(disableActionsFocusListener);
@@ -178,5 +177,4 @@
             pnl.add(overpassWizard, GBC.eol().fill(GBC.HORIZONTAL));
 
-            overpassQuery = new JosmTextArea("", 8, 80);
             overpassQuery.setFont(GuiHelper.getMonospacedFont(overpassQuery));
             overpassQuery.addFocusListener(disableActionsFocusListener);
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java	(revision 10250)
@@ -127,15 +127,17 @@
      */
     public final Future<?> download() {
-        return Main.worker.submit(downloadTaskRunnable);
+        return downloadTaskRunnable != null ? Main.worker.submit(downloadTaskRunnable) : null;
     }
 
     @Override
     public final Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
-        return Main.worker.submit(downloadTaskRunnable);
+        return downloadTaskRunnable != null ? Main.worker.submit(downloadTaskRunnable) : null;
     }
 
     @Override
     public final void cancel() {
-        downloadTaskRunnable.cancel();
+        if (downloadTaskRunnable != null) {
+            downloadTaskRunnable.cancel();
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java	(revision 10250)
@@ -26,6 +26,4 @@
  */
 public class ChangesetContentDownloadTask extends AbstractChangesetDownloadTask {
-
-    private final DownloadTask downloadTask;
 
     class DownloadTask extends RunnableDownloadTask {
@@ -129,6 +127,5 @@
             throw new IllegalArgumentException(
                     MessageFormat.format("Expected integer value > 0 for parameter ''{0}'', got ''{1}''", "changesetId", changesetId));
-        downloadTask = new DownloadTask(parent, Collections.singleton(changesetId));
-        setDownloadTask(downloadTask);
+        setDownloadTask(new DownloadTask(parent, Collections.singleton(changesetId)));
     }
 
@@ -142,6 +139,5 @@
      */
     public ChangesetContentDownloadTask(Component parent, Collection<Integer> changesetIds) {
-        downloadTask = new DownloadTask(parent, changesetIds);
-        setDownloadTask(downloadTask);
+        setDownloadTask(new DownloadTask(parent, changesetIds));
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 10250)
@@ -27,6 +27,4 @@
  */
 public class ChangesetHeaderDownloadTask extends AbstractChangesetDownloadTask {
-
-    private final DownloadTask downloadTask;
 
     class DownloadTask extends RunnableDownloadTask {
@@ -112,6 +110,5 @@
      */
     public ChangesetHeaderDownloadTask(Component dialogParent, Collection<Integer> ids, boolean includeDiscussion) {
-        downloadTask = new DownloadTask(dialogParent, ids, includeDiscussion);
-        setDownloadTask(downloadTask);
+        setDownloadTask(new DownloadTask(dialogParent, ids, includeDiscussion));
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java	(revision 10250)
@@ -26,6 +26,4 @@
  */
 public class ChangesetQueryTask extends AbstractChangesetDownloadTask {
-
-    private final DownloadTask downloadTask;
 
     class DownloadTask extends RunnableDownloadTask {
@@ -134,6 +132,5 @@
     public ChangesetQueryTask(Component parent, ChangesetQuery query) {
         CheckParameterUtil.ensureParameterNotNull(query, "query");
-        downloadTask = new DownloadTask(parent, query);
-        setDownloadTask(downloadTask);
+        setDownloadTask(new DownloadTask(parent, query));
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 10250)
@@ -51,5 +51,5 @@
     private ProgressMonitor progressMonitor;
 
-    private void addDownloadTask(DownloadTask dt, Rectangle2D td, int i, int n) {
+    private void addDownloadTask(ProgressMonitor progressMonitor, DownloadTask dt, Rectangle2D td, int i, int n) {
         ProgressMonitor childProgress = progressMonitor.createSubTaskMonitor(1, false);
         childProgress.setCustomText(tr("Download {0} of {1} ({2} left)", i, n, n - i));
@@ -82,8 +82,8 @@
             i++;
             if (osmData) {
-                addDownloadTask(new DownloadOsmTask(), td, i, n);
+                addDownloadTask(progressMonitor, new DownloadOsmTask(), td, i, n);
             }
             if (gpxData) {
-                addDownloadTask(new DownloadGpsTask(), td, i, n);
+                addDownloadTask(progressMonitor, new DownloadGpsTask(), td, i, n);
             }
         }
Index: trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java	(revision 10250)
@@ -63,5 +63,7 @@
     public void undoCommand() {
         relation.setMember(position, new RelationMember(oldRole, relation.getMember(position).getMember()));
-        relation.setModified(oldModified);
+        if (oldModified != null) {
+            relation.setModified(oldModified);
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java	(revision 10250)
@@ -103,5 +103,4 @@
     public void loadGridShiftFile(InputStream in, boolean loadAccuracy) throws IOException {
         byte[] b8 = new byte[8];
-        boolean bigEndian = true;
         fromEllipsoid = "";
         toEllipsoid = "";
@@ -111,4 +110,5 @@
         if (!"NUM_OREC".equals(overviewHeaderCountId))
             throw new IllegalArgumentException("Input file is not an NTv2 grid shift file");
+        boolean bigEndian;
         readBytes(in, b8);
         overviewHeaderCount = NTV2Util.getIntBE(b8, 0);
@@ -204,12 +204,15 @@
      */
     public boolean gridShiftForward(NTV2GridShift gs) {
-        // Try the last sub grid first, big chance the coord is still within it
-        NTV2SubGrid subGrid = lastSubGrid.getSubGridForCoord(gs.getLonPositiveWestSeconds(), gs.getLatSeconds());
+        NTV2SubGrid subGrid = null;
+        if (lastSubGrid != null) {
+            // Try the last sub grid first, big chance the coord is still within it
+            subGrid = lastSubGrid.getSubGridForCoord(gs.getLonPositiveWestSeconds(), gs.getLatSeconds());
+        }
         if (subGrid == null) {
-            subGrid = getSubGrid(gs.getLonPositiveWestSeconds(), gs.getLatSeconds());
-        }
-        if (subGrid == null)
+            subGrid = getSubGrid(topLevelSubGrid, gs.getLonPositiveWestSeconds(), gs.getLatSeconds());
+        }
+        if (subGrid == null) {
             return false;
-        else {
+        } else {
             subGrid.interpolateGridShift(gs);
             gs.setSubGridName(subGrid.getSubGridName());
@@ -251,12 +254,11 @@
 
     /**
-     * Find the finest SubGrid containing the coordinate, specified
-     * in Positive West Seconds
-     *
+     * Find the finest SubGrid containing the coordinate, specified in Positive West Seconds
+     * @param topLevelSubGrid top level subgrid
      * @param lon Longitude in Positive West Seconds
      * @param lat Latitude in Seconds
      * @return The SubGrid found or null
      */
-    private NTV2SubGrid getSubGrid(double lon, double lat) {
+    private static NTV2SubGrid getSubGrid(NTV2SubGrid[] topLevelSubGrid, double lon, double lat) {
         NTV2SubGrid sub = null;
         for (int i = 0; i < topLevelSubGrid.length; i++) {
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/AbstractProj.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/AbstractProj.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/AbstractProj.java	(revision 10250)
@@ -4,4 +4,5 @@
 import org.openstreetmap.josm.data.projection.Ellipsoid;
 import org.openstreetmap.josm.data.projection.ProjectionConfigurationException;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -84,4 +85,6 @@
     @Override
     public void initialize(ProjParameters params) throws ProjectionConfigurationException {
+        CheckParameterUtil.ensureParameterNotNull(params, "params");
+        CheckParameterUtil.ensureParameterNotNull(params.ellps, "params.ellps");
         e2 = params.ellps.e2;
         e = params.ellps.e;
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/LonLat.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/LonLat.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/LonLat.java	(revision 10250)
@@ -6,4 +6,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.projection.ProjectionConfigurationException;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -26,4 +27,6 @@
     @Override
     public void initialize(ProjParameters params) throws ProjectionConfigurationException {
+        CheckParameterUtil.ensureParameterNotNull(params, "params");
+        CheckParameterUtil.ensureParameterNotNull(params.ellps, "params.ellps");
         a = params.ellps.a;
     }
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java	(revision 10250)
@@ -6,4 +6,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.projection.ProjectionConfigurationException;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -119,4 +120,6 @@
     public void initialize(ProjParameters params) throws ProjectionConfigurationException {
         super.initialize(params);
+        CheckParameterUtil.ensureParameterNotNull(params, "params");
+        CheckParameterUtil.ensureParameterNotNull(params.ellps, "params.ellps");
         eb2 = params.ellps.eb2;
         latitudeOfOrigin = params.lat0 == null ? 0 : Math.toRadians(params.lat0);
Index: trunk/src/org/openstreetmap/josm/data/validation/PaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/PaintVisitor.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/data/validation/PaintVisitor.java	(revision 10250)
@@ -123,5 +123,5 @@
 
             if (selected) {
-                g.setColor(getHighlightColor());
+                g.setColor(getHighlightColor(color));
                 g.fillOval(p.x - 5, p.y - 5, 10, 10);
             }
@@ -146,5 +146,5 @@
         int deg = (int) Math.toDegrees(t);
         if (selected) {
-            g.setColor(getHighlightColor());
+            g.setColor(getHighlightColor(color));
             int[] x = new int[] {(int) (p1.x + cosT), (int) (p2.x + cosT),
                                  (int) (p2.x - cosT), (int) (p1.x - cosT)};
@@ -260,7 +260,8 @@
     /**
      * Gets the color to draw highlight markers with.
+     * @param color severity color
      * @return The color.
      */
-    private Color getHighlightColor() {
+    private static Color getHighlightColor(Color color) {
         return new Color(color.getRed(), color.getGreen(), color.getBlue(), (int) (color.getAlpha() * .4));
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java	(revision 10250)
@@ -40,9 +40,9 @@
 
     /** All way segments, grouped by cells */
-    private Map<Point2D, List<WaySegment>> cellSegments;
+    private final Map<Point2D, List<WaySegment>> cellSegments = new HashMap<>(1000);
     /** The already detected errors */
-    private Set<WaySegment> errorSegments;
+    private final Set<WaySegment> errorSegments = new HashSet<>();
     /** The already detected ways in error */
-    private Map<List<Way>, List<WaySegment>> seenWays;
+    private final Map<List<Way>, List<WaySegment>> seenWays = new HashMap<>(50);
 
     /**
@@ -188,7 +188,7 @@
     public void startTest(ProgressMonitor monitor) {
         super.startTest(monitor);
-        cellSegments = new HashMap<>(1000);
-        errorSegments = new HashSet<>();
-        seenWays = new HashMap<>(50);
+        cellSegments.clear();
+        errorSegments.clear();
+        seenWays.clear();
     }
 
@@ -196,7 +196,7 @@
     public void endTest() {
         super.endTest();
-        cellSegments = null;
-        errorSegments = null;
-        seenWays = null;
+        cellSegments.clear();
+        errorSegments.clear();
+        seenWays.clear();
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 10250)
@@ -620,6 +620,8 @@
                 }));
             }
-            Rectangle bounds = button.getBounds();
-            menu.show(button, bounds.x + bounds.width, 0);
+            if (button != null) {
+                Rectangle bounds = button.getBounds();
+                menu.show(button, bounds.x + bounds.width, 0);
+            }
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 10250)
@@ -397,5 +397,5 @@
         }
 
-        protected boolean isLastFilterValid() {
+        protected final boolean isLastFilterValid() {
             return lastFilter != null && filterModel.getFilters().contains(lastFilter);
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 10250)
@@ -738,5 +738,5 @@
          * @param layer the layer which is removed
          */
-        protected void onRemoveLayer(Layer layer) {
+        private void onRemoveLayer(Layer layer) {
             if (layer == null)
                 return;
@@ -762,5 +762,5 @@
          * @param layer the layer
          */
-        protected void onAddLayer(Layer layer) {
+        private void onAddLayer(Layer layer) {
             if (layer == null)
                 return;
@@ -768,5 +768,7 @@
             fireTableDataChanged();
             int idx = getLayers().indexOf(layer);
-            layerList.setRowHeight(idx, Math.max(16, layer.getIcon().getIconHeight()));
+            if (layerList != null) {
+                layerList.setRowHeight(idx, Math.max(16, layer.getIcon().getIconHeight()));
+            }
             selectionModel.setSelectionInterval(idx, idx);
             ensureSelectedIsVisible();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 10250)
@@ -1010,6 +1010,8 @@
             public void actionPerformed(ActionEvent e) {
                 try {
-                    recentTags.ignoreTag(tag, tagsToIgnore);
-                    PROPERTY_TAGS_TO_IGNORE.put(tagsToIgnore.writeToString());
+                    if (tagsToIgnore != null) {
+                        recentTags.ignoreTag(tag, tagsToIgnore);
+                        PROPERTY_TAGS_TO_IGNORE.put(tagsToIgnore.writeToString());
+                    }
                 } catch (SearchCompiler.ParseError parseError) {
                     throw new IllegalStateException(parseError);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java	(revision 10248)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java	(revision 10250)
@@ -232,7 +232,5 @@
      */
     private Direction determineDirection(int refI, final Direction refDirection, int k, boolean reversed) {
-        if (refI < 0 || k < 0 || refI >= members.size() || k >= members.size())
-            return NONE;
-        if (refDirection == NONE)
+        if (members == null || refI < 0 || k < 0 || refI >= members.size() || k >= members.size() || refDirection == NONE)
             return NONE;
 
