Index: /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 8308)
@@ -11,5 +11,4 @@
 import java.net.MalformedURLException;
 
-import javax.swing.Action;
 import javax.swing.JComboBox;
 import javax.swing.JOptionPane;
@@ -36,5 +35,5 @@
  */
 public class AddImageryLayerAction extends JosmAction implements AdaptableAction {
-    private final ImageryInfo info;
+    private final transient ImageryInfo info;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 8308)
@@ -55,6 +55,6 @@
     private final String mode;
 
-    protected ZoomChangeAdapter zoomChangeAdapter;
-    protected MapFrameAdapter mapFrameAdapter;
+    protected transient ZoomChangeAdapter zoomChangeAdapter;
+    protected transient MapFrameAdapter mapFrameAdapter;
     /** Time of last zoom to bounds action */
     protected long lastZoomTime = -1;
Index: /trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 8308)
@@ -19,5 +19,5 @@
  */
 public class ChangesetManagerToggleAction extends ToggleAction {
-    private WindowListener changesetCacheManagerClosedHandler;
+    private transient WindowListener changesetCacheManagerClosedHandler;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 8308)
@@ -7,4 +7,5 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -113,6 +114,6 @@
      * Comparator used to order PolarNode relative to their angle.
      */
-    private static class PolarNodeComparator implements Comparator<PolarNode> {
-
+    private static class PolarNodeComparator implements Comparator<PolarNode>, Serializable {
+        private static final long serialVersionUID = 1L;
         @Override
         public int compare(PolarNode pc1, PolarNode pc2) {
Index: /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 8308)
@@ -28,5 +28,5 @@
  */
 public class FullscreenToggleAction extends ToggleAction {
-    private GraphicsDevice gd;
+    private transient GraphicsDevice gd;
     private Rectangle prevBounds;
 
Index: /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 8308)
@@ -46,5 +46,5 @@
     private double oldDx, oldDy;
     private EastNorth prevEastNorth;
-    private ImageryLayer layer;
+    private transient ImageryLayer layer;
     private MapMode oldMapMode;
 
Index: /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 8308)
@@ -55,5 +55,5 @@
     private final LinkedList<Command> cmds = new LinkedList<>();
     private int cmdsCount = 0;
-    private final List<Relation> addedRelations = new LinkedList<>();
+    private final transient List<Relation> addedRelations = new LinkedList<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 8308)
@@ -7,4 +7,5 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.Serializable;
 import java.util.Collection;
 import java.util.Collections;
@@ -171,5 +172,8 @@
      * Sorts collinear nodes by their distance to a common reference node.
      */
-    private static class NodeDistanceToRefNodeComparator implements Comparator<Node> {
+    private static class NodeDistanceToRefNodeComparator implements Comparator<Node>, Serializable {
+
+        private static final long serialVersionUID = 1L;
+
         private final EastNorth refPoint;
         private EastNorth refPoint2;
Index: /trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 8308)
@@ -40,7 +40,7 @@
 public abstract class JosmAction extends AbstractAction implements Destroyable {
 
-    protected Shortcut sc;
-    private LayerChangeAdapter layerChangeAdapter;
-    private SelectionChangeAdapter selectionChangeAdapter;
+    protected transient Shortcut sc;
+    private transient LayerChangeAdapter layerChangeAdapter;
+    private transient SelectionChangeAdapter selectionChangeAdapter;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java	(revision 8308)
@@ -70,5 +70,5 @@
      * List of available rectifier services.
      */
-    private final List<RectifierService> services = new ArrayList<>();
+    private final transient List<RectifierService> services = new ArrayList<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 8308)
@@ -118,5 +118,5 @@
                         }
                     });
-                    if (matchingFiles.length == 1) {
+                    if (matchingFiles != null && matchingFiles.length == 1) {
                         // use the unique match as filename
                         this.files.add(matchingFiles[0]);
Index: /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 8308)
@@ -52,5 +52,5 @@
 public class OpenLocationAction extends JosmAction {
 
-    protected final List<Class<? extends DownloadTask>> downloadTasks;
+    protected final transient List<Class<? extends DownloadTask>> downloadTasks;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 8308)
@@ -69,21 +69,21 @@
     }
 
-    protected OsmDataLayer layer;
+    protected transient OsmDataLayer layer;
     protected JCheckBox cbClearUndoRedo;
 
-    protected Set<OsmPrimitive> toPurge;
+    protected transient Set<OsmPrimitive> toPurge;
     /**
      * finally, contains all objects that are purged
      */
-    protected Set<OsmPrimitive> toPurgeChecked;
+    protected transient Set<OsmPrimitive> toPurgeChecked;
     /**
      * Subset of toPurgeChecked. Marks primitives that remain in the
      * dataset, but incomplete.
      */
-    protected Set<OsmPrimitive> makeIncomplete;
+    protected transient Set<OsmPrimitive> makeIncomplete;
     /**
      * Subset of toPurgeChecked. Those that have not been in the selection.
      */
-    protected List<OsmPrimitive> toPurgeAdditionally;
+    protected transient List<OsmPrimitive> toPurgeAdditionally;
 
     @Override
Index: /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java	(revision 8308)
@@ -2,6 +2,6 @@
 package org.openstreetmap.josm.actions;
 
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import java.awt.Dialog.ModalityType;
@@ -17,6 +17,6 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
@@ -29,5 +29,5 @@
 
     private File file;
-    private Layer layer;
+    private transient Layer layer;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 8308)
@@ -49,7 +49,7 @@
 public class SessionSaveAsAction extends DiskAccessAction {
 
-    private List<Layer> layers;
-    private Map<Layer, SessionLayerExporter> exporters;
-    private MultiMap<Layer, Layer> dependencies;
+    private transient List<Layer> layers;
+    private transient Map<Layer, SessionLayerExporter> exporters;
+    private transient MultiMap<Layer, Layer> dependencies;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/ToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ToggleAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/ToggleAction.java	(revision 8308)
@@ -23,5 +23,5 @@
 public abstract class ToggleAction extends JosmAction {
 
-    private final List<ButtonModel> buttonModels = new ArrayList<>();
+    private final transient List<ButtonModel> buttonModels = new ArrayList<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java	(revision 8308)
@@ -11,6 +11,6 @@
 public class ToggleUploadDiscouragedLayerAction extends JosmAction {
 
-    private OsmDataLayer layer;
-    
+    private transient OsmDataLayer layer;
+
     public ToggleUploadDiscouragedLayerAction(OsmDataLayer layer) {
         super(tr("Encourage/discourage upload"), null, null, null, false);
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 8308)
@@ -47,7 +47,7 @@
 public class UnGlueAction extends JosmAction {
 
-    private Node selectedNode;
-    private Way selectedWay;
-    private Set<Node> selectedNodes;
+    private transient Node selectedNode;
+    private transient Way selectedWay;
+    private transient Set<Node> selectedNodes;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 8308)
@@ -35,5 +35,5 @@
 
     /** Last selection used to validate */
-    private Collection<OsmPrimitive> lastSelection;
+    private transient Collection<OsmPrimitive> lastSelection;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 8308)
@@ -27,5 +27,5 @@
 public class AddNoteAction extends MapMode implements KeyPressReleaseListener {
 
-    private NoteData noteData;
+    private transient NoteData noteData;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 8308)
@@ -56,5 +56,5 @@
      * set would have to be checked.
      */
-    private WaySegment oldHighlightedWaySegment = null;
+    private transient WaySegment oldHighlightedWaySegment = null;
 
     private static final HighlightHelper highlightHelper = new HighlightHelper();
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 8308)
@@ -76,18 +76,18 @@
     private final Cursor cursorJoinWay;
 
-    private Node lastUsedNode = null;
+    private transient Node lastUsedNode = null;
     private static final double PHI = Math.toRadians(90);
     private double toleranceMultiplier;
 
-    private Node mouseOnExistingNode;
-    private Set<Way> mouseOnExistingWays = new HashSet<>();
+    private transient Node mouseOnExistingNode;
+    private transient Set<Way> mouseOnExistingWays = new HashSet<>();
     // old highlights store which primitives are currently highlighted. This
     // is true, even if target highlighting is disabled since the status bar
     // derives its information from this list as well.
-    private Set<OsmPrimitive> oldHighlights = new HashSet<>();
+    private transient Set<OsmPrimitive> oldHighlights = new HashSet<>();
     // new highlights contains a list of primitives that should be highlighted
     // but haven’t been so far. The idea is to compare old and new and only
     // repaint if there are changes.
-    private Set<OsmPrimitive> newHighlights = new HashSet<>();
+    private transient Set<OsmPrimitive> newHighlights = new HashSet<>();
     private boolean drawHelperLine;
     private boolean wayIsFinished = false;
@@ -97,13 +97,13 @@
     private Color rubberLineColor;
 
-    private Node currentBaseNode;
-    private Node previousNode;
+    private transient Node currentBaseNode;
+    private transient Node previousNode;
     private EastNorth currentMouseEastNorth;
 
-    private final SnapHelper snapHelper = new SnapHelper();
-
-    private final Shortcut backspaceShortcut;
+    private final transient SnapHelper snapHelper = new SnapHelper();
+
+    private final transient Shortcut backspaceShortcut;
     private final BackSpaceAction backspaceAction;
-    private final Shortcut snappingShortcut;
+    private final transient Shortcut snappingShortcut;
     private boolean ignoreNextKeyRelease;
 
@@ -111,5 +111,5 @@
     private final JCheckBoxMenuItem snapCheckboxMenuItem;
     private boolean useRepeatedShortcut;
-    private Stroke rubberLineStroke;
+    private transient Stroke rubberLineStroke;
     private static final BasicStroke BASIC_STROKE = new BasicStroke(1);
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 8308)
@@ -25,4 +25,5 @@
 import java.util.LinkedList;
 import java.util.List;
+
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenuItem;
@@ -49,6 +50,6 @@
 import org.openstreetmap.josm.gui.layer.MapViewPaintable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.KeyPressReleaseListener;
-import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.ModifierListener;
 import org.openstreetmap.josm.tools.Geometry;
@@ -72,8 +73,8 @@
 
     private long mouseDownTime = 0;
-    private WaySegment selectedSegment = null;
-    private Node selectedNode = null;
+    private transient WaySegment selectedSegment = null;
+    private transient Node selectedNode = null;
     private Color mainColor;
-    private Stroke mainStroke;
+    private transient Stroke mainStroke;
 
     /** settings value whether shared nodes should be ignored or not */
@@ -86,13 +87,13 @@
      */
     private Color helperColor;
-    private Stroke helperStrokeDash;
-    private Stroke helperStrokeRA;
-
-    private Stroke oldLineStroke;
+    private transient Stroke helperStrokeDash;
+    private transient Stroke helperStrokeRA;
+
+    private transient Stroke oldLineStroke;
     private double symbolSize;
     /**
      * Possible directions to move to.
      */
-    private List<ReferenceSegment> possibleMoveDirections;
+    private transient List<ReferenceSegment> possibleMoveDirections;
 
 
@@ -105,5 +106,5 @@
      * The direction that is currently active.
      */
-    private ReferenceSegment activeMoveDirection;
+    private transient ReferenceSegment activeMoveDirection;
 
     /**
@@ -135,10 +136,10 @@
      * the command that performed last move.
      */
-    private MoveCommand moveCommand;
+    private transient MoveCommand moveCommand;
     /**
      *  The command used for dual alignment movement.
      *  Needs to be separate, due to two nodes moving in different directions.
      */
-    private MoveCommand moveCommand2;
+    private transient MoveCommand moveCommand2;
 
     /** The cursor for the 'create_new' mode. */
@@ -176,5 +177,5 @@
     private boolean dualAlignActive;
     /** Dual alignment reference segments */
-    private ReferenceSegment dualAlignSegment1, dualAlignSegment2;
+    private transient ReferenceSegment dualAlignSegment1, dualAlignSegment2;
     /** {@code true}, if new segment was collapsed */
     private boolean dualAlignSegmentCollapsed = false;
@@ -182,5 +183,5 @@
     private final DualAlignChangeAction dualAlignChangeAction;
     private final JCheckBoxMenuItem dualAlignCheckboxMenuItem;
-    private final Shortcut dualAlignShortcut;
+    private final transient Shortcut dualAlignShortcut;
     private boolean useRepeatedShortcut;
     private boolean ignoreNextKeyRelease;
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 8308)
@@ -64,7 +64,7 @@
     private static final long serialVersionUID = 42L;
 
-    private Way targetWay;
-    private Node candidateNode = null;
-    private WaySegment candidateSegment = null;
+    private transient Way targetWay;
+    private transient Node candidateNode = null;
+    private transient WaySegment candidateSegment = null;
 
     private Point mousePos = null;
@@ -80,8 +80,8 @@
 
     private Color guideColor;
-    private Stroke selectTargetWayStroke;
-    private Stroke moveNodeStroke;
-    private Stroke addNodeStroke;
-    private Stroke deleteNodeStroke;
+    private transient Stroke selectTargetWayStroke;
+    private transient Stroke moveNodeStroke;
+    private transient Stroke addNodeStroke;
+    private transient Stroke deleteNodeStroke;
     private int dotSize;
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 8308)
@@ -102,9 +102,9 @@
     private double snapDistanceNautical;
 
-    private ModifiersSpec snapModifierCombo;
-    private ModifiersSpec copyTagsModifierCombo;
-    private ModifiersSpec addToSelectionModifierCombo;
-    private ModifiersSpec toggleSelectedModifierCombo;
-    private ModifiersSpec setSelectedModifierCombo;
+    private transient ModifiersSpec snapModifierCombo;
+    private transient ModifiersSpec copyTagsModifierCombo;
+    private transient ModifiersSpec addToSelectionModifierCombo;
+    private transient ModifiersSpec toggleSelectedModifierCombo;
+    private transient ModifiersSpec setSelectedModifierCombo;
 
     private int initialMoveDelay;
@@ -118,12 +118,12 @@
     private boolean mouseHasBeenDragged;
 
-    private WaySegment referenceSegment;
-    private ParallelWays pWays;
-    private Set<Way> sourceWays;
+    private transient WaySegment referenceSegment;
+    private transient ParallelWays pWays;
+    private transient Set<Way> sourceWays;
     private EastNorth helperLineStart;
     private EastNorth helperLineEnd;
 
-    private Stroke helpLineStroke;
-    private Stroke refLineStroke;
+    private transient Stroke helpLineStroke;
+    private transient Stroke refLineStroke;
     private Color mainColor;
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 8308)
@@ -23,5 +23,5 @@
     private Point mousePos = null;
     private Point mouseStart = null;
-    private PlayHeadMarker playHeadMarker = null;
+    private transient PlayHeadMarker playHeadMarker = null;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 8308)
@@ -122,5 +122,5 @@
 
     private Mode mode = null;
-    private final SelectionManager selectionManager;
+    private final transient SelectionManager selectionManager;
     private boolean cancelDrawMode = false;
     private boolean drawTargetHighlight;
@@ -171,5 +171,5 @@
      * set would have to be checked.
      */
-    private Set<OsmPrimitive> oldHighlights = new HashSet<>();
+    private transient Set<OsmPrimitive> oldHighlights = new HashSet<>();
 
     /**
@@ -947,6 +947,6 @@
     }
 
-    private CycleManager cycleManager = new CycleManager();
-    private VirtualManager virtualManager = new VirtualManager();
+    private transient CycleManager cycleManager = new CycleManager();
+    private transient VirtualManager virtualManager = new VirtualManager();
 
     private class CycleManager {
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 8308)
@@ -32,8 +32,7 @@
 
     /**
-     * Manager that manages the selection rectangle with the aspect ratio of the
-     * MapView.
+     * Manager that manages the selection rectangle with the aspect ratio of the MapView.
      */
-    private final SelectionManager selectionManager;
+    private final transient SelectionManager selectionManager;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java	(revision 8308)
@@ -13,10 +13,10 @@
 
 /**
- * Ancestor for all actions that want to work with relation collection and 
+ * Ancestor for all actions that want to work with relation collection and
  * to be disabled if the collection is empty
  * @since 5793
  */
 public abstract class AbstractRelationAction extends AbstractAction implements OsmPrimitiveAction {
-    protected Collection<Relation> relations = Collections.<Relation>emptySet();
+    protected transient Collection<Relation> relations = Collections.<Relation>emptySet();
 
     protected static final Collection<Relation> getRelations(Collection<? extends OsmPrimitive> primitives) {
@@ -28,5 +28,5 @@
         }
     }
-    
+
     @Override
     public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
@@ -34,5 +34,5 @@
         updateEnabledState();
     }
-    
+
     protected void updateEnabledState() {
         setEnabled(!relations.isEmpty());
Index: /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 8308)
@@ -24,5 +24,5 @@
 public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAction {
 
-    private Collection<OsmPrimitive> incompleteMembers;
+    private transient Collection<OsmPrimitive> incompleteMembers;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/corrector/CorrectionTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/corrector/CorrectionTableModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/corrector/CorrectionTableModel.java	(revision 8308)
@@ -11,5 +11,5 @@
 public abstract class CorrectionTableModel<C extends Correction> extends AbstractTableModel {
 
-    private List<C> corrections;
+    private transient List<C> corrections;
     private boolean[] apply;
     private int applyColumn;
Index: /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 8308)
@@ -100,6 +100,9 @@
             }
 
-            for (File f: deletedLayersDir.listFiles()) {
-                deletedLayers.add(f); // FIXME: sort by mtime
+            File[] files = deletedLayersDir.listFiles();
+            if (files != null) {
+                for (File f: files) {
+                    deletedLayers.add(f); // FIXME: sort by mtime
+                }
             }
 
Index: /trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 8308)
@@ -303,6 +303,9 @@
     public static void deleteFileOrDirectory(File f) {
         if (f.isDirectory()) {
-            for (File f1: f.listFiles()) {
-                deleteFileOrDirectory(f1);
+            File[] files = f.listFiles();
+            if (files != null) {
+                for (File f1: files) {
+                    deleteFileOrDirectory(f1);
+                }
             }
         }
@@ -310,5 +313,5 @@
             f.delete();
         } catch (Exception e) {
-            log("Warning: Can not delete file "+f.getPath());
+            log("Warning: Can not delete file "+f.getPath()+": "+e.getMessage());
         }
     }
Index: /trunk/src/org/openstreetmap/josm/data/cache/CacheEntryAttributes.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/cache/CacheEntryAttributes.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/cache/CacheEntryAttributes.java	(revision 8308)
@@ -9,5 +9,5 @@
 /**
  * Class that contains attirubtes for JCS cache entries. Parameters are used to properly handle HTTP caching
- * 
+ *
  * @author Wiktor Niesiobędzki
  *
@@ -15,5 +15,5 @@
 public class CacheEntryAttributes extends ElementAttributes {
     private static final long serialVersionUID = 1L; //version
-    private Map<String, String> attrs = new HashMap<String, String>();
+    private transient Map<String, String> attrs = new HashMap<String, String>();
     private final static String NO_TILE_AT_ZOOM = "noTileAtZoom";
     private final static String ETAG = "Etag";
Index: /trunk/src/org/openstreetmap/josm/data/coor/CachedLatLon.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/coor/CachedLatLon.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/coor/CachedLatLon.java	(revision 8308)
@@ -16,5 +16,5 @@
 public class CachedLatLon extends LatLon {
     private EastNorth eastNorth;
-    private Projection proj;
+    private transient Projection proj;
 
     public CachedLatLon(double lat, double lon) {
Index: /trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 8308)
@@ -10,4 +10,6 @@
  */
 public class EastNorth extends Coordinate {
+
+    private static final long serialVersionUID = 1L;
 
     public EastNorth(double east, double north) {
Index: /trunk/src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 8308)
@@ -38,4 +38,6 @@
 public class LatLon extends Coordinate {
 
+    private static final long serialVersionUID = 1L;
+
     /**
      * Minimum difference in location to not be represented as the same position.
Index: /trunk/src/org/openstreetmap/josm/data/gpx/Extensions.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/gpx/Extensions.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/gpx/Extensions.java	(revision 8308)
@@ -10,4 +10,6 @@
 public class Extensions extends LinkedHashMap<String, String> {
 
+    private static final long serialVersionUID = 1L;
+
     public Extensions(Map<? extends String, ? extends String> m) {
         super(m);
Index: /trunk/src/org/openstreetmap/josm/data/imagery/WmsCache.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/WmsCache.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/WmsCache.java	(revision 8308)
@@ -227,7 +227,10 @@
                 }
 
-                for (File file: projectionDir.listFiles()) {
-                    if (!referencedFiles.contains(file.getName())) {
-                        file.delete();
+                File[] files = projectionDir.listFiles();
+                if (files != null) {
+                    for (File file: files) {
+                        if (!referencedFiles.contains(file.getName())) {
+                            file.delete();
+                        }
                     }
                 }
@@ -235,7 +238,10 @@
         }
 
-        for (File projectionDir: cacheDir.listFiles()) {
-            if (projectionDir.isDirectory() && !usedProjections.contains(projectionDir.getName())) {
-                Utils.deleteDirectory(projectionDir);
+        File[] files = cacheDir.listFiles();
+        if (files != null) {
+            for (File projectionDir: files) {
+                if (projectionDir.isDirectory() && !usedProjections.contains(projectionDir.getName())) {
+                    Utils.deleteDirectory(projectionDir);
+                }
             }
         }
Index: /trunk/src/org/openstreetmap/josm/data/osm/NodePositionComparator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/NodePositionComparator.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/osm/NodePositionComparator.java	(revision 8308)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.data.osm;
 
+import java.io.Serializable;
 import java.util.Comparator;
 
@@ -9,5 +10,8 @@
  * @author viesturs
  */
-public class NodePositionComparator implements Comparator<Node> {
+public class NodePositionComparator implements Comparator<Node>, Serializable {
+
+    private static final long serialVersionUID = 1L;
+
     @Override
     public int compare(Node n1, Node n2) {
Index: /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java	(revision 8308)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.data.osm;
 
+import java.io.Serializable;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -15,5 +16,8 @@
  * @since 4113
  */
-public class OsmPrimitiveComparator implements Comparator<OsmPrimitive> {
+public class OsmPrimitiveComparator implements Comparator<OsmPrimitive>, Serializable {
+
+    private static final long serialVersionUID = 1L;
+
     private final Map<OsmPrimitive, String> cache = new HashMap<>();
     private final boolean relationsFirst;
Index: /trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java	(revision 8308)
@@ -9,4 +9,7 @@
 
 public class SimplePrimitiveId implements PrimitiveId, Serializable {
+
+    private static final long serialVersionUID = 1L;
+
     private final long id;
     private final OsmPrimitiveType type;
Index: /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShift.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShift.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShift.java	(revision 8308)
@@ -37,4 +37,6 @@
 public class NTV2GridShift implements Serializable {
 
+    private static final long serialVersionUID = 1L;
+
     private static final double METRE_PER_SECOND = 2.0 * Math.PI * 6378137.0 / 3600.0 / 360.0;
     private static final double RADIANS_PER_SECOND = 2.0 * Math.PI / 3600.0 / 360.0;
Index: /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java	(revision 8308)
@@ -63,4 +63,6 @@
 public class NTV2GridShiftFile implements Serializable {
 
+    private static final long serialVersionUID = 1L;
+
     private int overviewHeaderCount;
     private int subGridHeaderCount;
Index: /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java	(revision 8308)
@@ -38,4 +38,6 @@
  */
 public class NTV2SubGrid implements Cloneable, Serializable {
+
+    private static final long serialVersionUID = 1L;
 
     private String subGridName;
Index: /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 8308)
@@ -77,5 +77,5 @@
     private boolean toggleable = false;
     private String rememberSizePref = "";
-    private WindowGeometry defaultWindowGeometry = null;
+    private transient WindowGeometry defaultWindowGeometry = null;
     private String togglePref = "";
     private int toggleValue = -1;
@@ -85,9 +85,9 @@
     private final String[] bTexts;
     private String[] bToolTipTexts;
-    private Icon[] bIcons;
-    private List<Integer> cancelButtonIdx = Collections.emptyList();
+    private transient Icon[] bIcons;
+    private transient List<Integer> cancelButtonIdx = Collections.emptyList();
     private int defaultButtonIdx = 1;
     protected JButton defaultButton = null;
-    private Icon icon;
+    private transient Icon icon;
     private boolean modal;
     private boolean focusOnDefaultButton = false;
@@ -105,6 +105,6 @@
 
     // For easy access when inherited
-    protected Insets contentInsets = new Insets(10,5,0,5);
-    protected List<JButton> buttons = new ArrayList<>();
+    protected transient Insets contentInsets = new Insets(10,5,0,5);
+    protected transient List<JButton> buttons = new ArrayList<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/IconToggleButton.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/IconToggleButton.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/IconToggleButton.java	(revision 8308)
@@ -25,5 +25,5 @@
 
     public boolean groupbutton;
-    private ShowHideButtonListener listener;
+    private transient ShowHideButtonListener listener;
     private boolean hideIfDisabled = false;
     private boolean isExpert;
Index: /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 8308)
@@ -58,5 +58,5 @@
     };
 
-    private Action offsetAction = new JosmAction(
+    private transient Action offsetAction = new JosmAction(
             tr("Imagery offset"), "mapmode/adjustimg", tr("Adjust imagery offset"), null, false, false) {
         {
@@ -256,5 +256,5 @@
      * @since 5803
      */
-    private List <Object> dynamicItems = new ArrayList<>(20);
+    private transient List <Object> dynamicItems = new ArrayList<>(20);
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 8308)
@@ -232,5 +232,5 @@
     public final HistoryInfoWebAction historyinfoweb = new HistoryInfoWebAction();
     /** View / "Zoom to"... actions */
-    public final Map<String, AutoScaleAction> autoScaleActions = new HashMap<>();
+    public final transient Map<String, AutoScaleAction> autoScaleActions = new HashMap<>();
     /** View / Jump to position */
     public final JumpToAction jumpToAct = new JumpToAction();
Index: /trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 8308)
@@ -103,5 +103,5 @@
      * This object allows to detect key press and release events
      */
-    public final AdvancedKeyPressDetector keyDetector = new AdvancedKeyPressDetector();
+    public final transient AdvancedKeyPressDetector keyDetector = new AdvancedKeyPressDetector();
 
     /**
@@ -114,8 +114,8 @@
     private final JToolBar toolBarToggle = new JToolBar(JToolBar.VERTICAL);
 
-    private final List<ToggleDialog> allDialogs = new ArrayList<>();
-    private final List<MapMode> mapModes = new ArrayList<>();
-    private final List<IconToggleButton> allDialogButtons = new ArrayList<>();
-    public final List<IconToggleButton> allMapModeButtons = new ArrayList<>();
+    private final transient List<ToggleDialog> allDialogs = new ArrayList<>();
+    private final transient List<MapMode> mapModes = new ArrayList<>();
+    private final transient List<IconToggleButton> allDialogButtons = new ArrayList<>();
+    public final transient List<IconToggleButton> allMapModeButtons = new ArrayList<>();
 
     private final ListAllButtonsAction listAllDialogsAction = new ListAllButtonsAction(allDialogButtons);
@@ -141,5 +141,5 @@
     public LassoModeAction mapModeSelectLasso;
 
-    private final Map<Layer, MapMode> lastMapMode = new HashMap<>();
+    private final transient Map<Layer, MapMode> lastMapMode = new HashMap<>();
     private final MapMode mapModeDraw;
     private final MapMode mapModeZoom;
@@ -538,5 +538,5 @@
 
         private JButton button;
-        private Collection<? extends HideableButton> buttons;
+        private transient Collection<? extends HideableButton> buttons;
 
 
@@ -670,5 +670,5 @@
     private static final CopyOnWriteArrayList<MapModeChangeListener> mapModeChangeListeners = new CopyOnWriteArrayList<>();
 
-    private PreferenceChangedListener sidetoolbarPreferencesChangedListener;
+    private transient PreferenceChangedListener sidetoolbarPreferencesChangedListener;
     /**
      * Adds a mapMode change listener
Index: /trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 8308)
@@ -121,5 +121,5 @@
      */
     private final MapView mv;
-    private final Collector collector;
+    private final transient Collector collector;
 
     public class BackgroundProgressMonitor implements ProgressMonitorDialog {
@@ -175,15 +175,21 @@
     }
 
-    private final ImageLabel latText = new ImageLabel("lat", tr("The geographic latitude at the mouse pointer."), 11, PROP_BACKGROUND_COLOR.get());
-    private final ImageLabel lonText = new ImageLabel("lon", tr("The geographic longitude at the mouse pointer."), 11, PROP_BACKGROUND_COLOR.get());
-    private final ImageLabel headingText = new ImageLabel("heading", tr("The (compass) heading of the line segment being drawn."), 6, PROP_BACKGROUND_COLOR.get());
-    private final ImageLabel angleText = new ImageLabel("angle", tr("The angle between the previous and the current way segment."), 6, PROP_BACKGROUND_COLOR.get());
-    private final ImageLabel distText = new ImageLabel("dist", tr("The length of the new way segment being drawn."), 10, PROP_BACKGROUND_COLOR.get());
-    private final ImageLabel nameText = new ImageLabel("name", tr("The name of the object at the mouse pointer."), 20, PROP_BACKGROUND_COLOR.get());
+    private final ImageLabel latText = new ImageLabel("lat",
+            tr("The geographic latitude at the mouse pointer."), 11, PROP_BACKGROUND_COLOR.get());
+    private final ImageLabel lonText = new ImageLabel("lon",
+            tr("The geographic longitude at the mouse pointer."), 11, PROP_BACKGROUND_COLOR.get());
+    private final ImageLabel headingText = new ImageLabel("heading",
+            tr("The (compass) heading of the line segment being drawn."), 6, PROP_BACKGROUND_COLOR.get());
+    private final ImageLabel angleText = new ImageLabel("angle",
+            tr("The angle between the previous and the current way segment."), 6, PROP_BACKGROUND_COLOR.get());
+    private final ImageLabel distText = new ImageLabel("dist",
+            tr("The length of the new way segment being drawn."), 10, PROP_BACKGROUND_COLOR.get());
+    private final ImageLabel nameText = new ImageLabel("name",
+            tr("The name of the object at the mouse pointer."), 20, PROP_BACKGROUND_COLOR.get());
     private final JosmTextField helpText = new JosmTextField();
     private final JProgressBar progressBar = new JProgressBar();
-    public final BackgroundProgressMonitor progressMonitor = new BackgroundProgressMonitor();
-
-    private final SoMChangeListener somListener;
+    public final transient BackgroundProgressMonitor progressMonitor = new BackgroundProgressMonitor();
+
+    private final transient SoMChangeListener somListener;
 
     // Distance value displayed in distText, stored if refresh needed after a change of system of measurement
@@ -197,7 +203,7 @@
      * It gets destroyed by destroy() when the MapFrame itself is destroyed.
      */
-    private Thread thread;
-
-    private final List<StatusTextHistory> statusText = new ArrayList<>();
+    private transient Thread thread;
+
+    private final transient List<StatusTextHistory> statusText = new ArrayList<>();
 
     private static class StatusTextHistory {
@@ -649,7 +655,7 @@
      * The last sent mouse movement event.
      */
-    private MouseState mouseState = new MouseState();
-
-    private AWTEventListener awtListener = new AWTEventListener() {
+    private transient MouseState mouseState = new MouseState();
+
+    private transient AWTEventListener awtListener = new AWTEventListener() {
          @Override
          public void eventDispatched(AWTEvent event) {
@@ -667,5 +673,5 @@
     };
 
-    private MouseMotionListener mouseMotionListener = new MouseMotionListener() {
+    private transient MouseMotionListener mouseMotionListener = new MouseMotionListener() {
         @Override
         public void mouseMoved(MouseEvent e) {
@@ -683,5 +689,5 @@
     };
 
-    private KeyAdapter keyAdapter = new KeyAdapter() {
+    private transient KeyAdapter keyAdapter = new KeyAdapter() {
         @Override public void keyPressed(KeyEvent e) {
             synchronized (collector) {
@@ -722,5 +728,5 @@
         private final JMenuItem jumpButton = add(Main.main.menu.jumpToAct);
 
-        private final Collection<JCheckBoxMenuItem> somItems = new ArrayList<>();
+        private final transient Collection<JCheckBoxMenuItem> somItems = new ArrayList<>();
 
         private final JSeparator separator = new JSeparator();
Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 8308)
@@ -207,16 +207,16 @@
      * A list of all layers currently loaded.
      */
-    private final List<Layer> layers = new ArrayList<>();
+    private final transient List<Layer> layers = new ArrayList<>();
     /**
      * The play head marker: there is only one of these so it isn't in any specific layer
      */
-    public PlayHeadMarker playHeadMarker = null;
+    public transient PlayHeadMarker playHeadMarker = null;
 
     /**
      * The layer from the layers list that is currently active.
      */
-    private Layer activeLayer;
-
-    private OsmDataLayer editLayer;
+    private transient Layer activeLayer;
+
+    private transient OsmDataLayer editLayer;
 
     /**
@@ -225,15 +225,15 @@
     public MouseEvent lastMEvent = new MouseEvent(this, 0, 0, 0, 0, 0, 0, false); // In case somebody reads it before first mouse move
 
-    private final List<MapViewPaintable> temporaryLayers = new LinkedList<>();
-
-    private BufferedImage nonChangedLayersBuffer;
-    private BufferedImage offscreenBuffer;
+    private final transient List<MapViewPaintable> temporaryLayers = new LinkedList<>();
+
+    private transient BufferedImage nonChangedLayersBuffer;
+    private transient BufferedImage offscreenBuffer;
     // Layers that wasn't changed since last paint
-    private final List<Layer> nonChangedLayers = new ArrayList<>();
-    private Layer changedLayer;
+    private final transient List<Layer> nonChangedLayers = new ArrayList<>();
+    private transient Layer changedLayer;
     private int lastViewID;
     private boolean paintPreferencesChanged = true;
     private Rectangle lastClipBounds = new Rectangle();
-    private MapMover mapMover;
+    private transient MapMover mapMover;
 
     /**
@@ -909,6 +909,7 @@
     }
 
-    private SelectionChangedListener repaintSelectionChangedListener = new SelectionChangedListener(){
-        @Override public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
+    private transient SelectionChangedListener repaintSelectionChangedListener = new SelectionChangedListener(){
+        @Override
+        public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
             repaint();
         }
Index: /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 8308)
@@ -88,5 +88,5 @@
     }
 
-    public Predicate<OsmPrimitive> isSelectablePredicate = new Predicate<OsmPrimitive>() {
+    public transient Predicate<OsmPrimitive> isSelectablePredicate = new Predicate<OsmPrimitive>() {
         @Override
         public boolean evaluate(OsmPrimitive prim) {
@@ -180,9 +180,9 @@
     protected EastNorth center = calculateDefaultCenter();
 
-    private final Object paintRequestLock = new Object();
+    private final transient Object paintRequestLock = new Object();
     private Rectangle paintRect = null;
     private Polygon paintPoly = null;
 
-    protected ViewportData initialViewport;
+    protected transient ViewportData initialViewport;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java	(revision 8308)
@@ -34,5 +34,5 @@
     public final JLabel currentAction = new JLabel("");
     private final JLabel customText = new JLabel("");
-    public final BoundedRangeModel progress = progressBar.getModel();
+    public final transient BoundedRangeModel progress = progressBar.getModel();
     private JButton btnCancel;
     private JButton btnInBackground;
Index: /trunk/src/org/openstreetmap/josm/gui/ScrollViewport.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ScrollViewport.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/ScrollViewport.java	(revision 8308)
@@ -66,5 +66,5 @@
     private JComponent component = null;
 
-    private List<JButton> buttons = new ArrayList<>();
+    private transient List<JButton> buttons = new ArrayList<>();
 
     private Timer timer = new Timer(100, new ActionListener() {
Index: /trunk/src/org/openstreetmap/josm/gui/SideButton.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 8308)
@@ -27,5 +27,5 @@
     private static final int iconHeight = 20;
 
-    private PropertyChangeListener propertyChangeListener;
+    private transient PropertyChangeListener propertyChangeListener;
 
     public SideButton(Action action) {
Index: /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 8308)
@@ -40,5 +40,5 @@
 public class SplashScreen extends JFrame {
 
-    private final SwingRenderingProgressMonitor progressMonitor;
+    private final transient SwingRenderingProgressMonitor progressMonitor;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/actionsupport/DeleteFromRelationConfirmationDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/actionsupport/DeleteFromRelationConfirmationDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/actionsupport/DeleteFromRelationConfirmationDialog.java	(revision 8308)
@@ -187,5 +187,5 @@
      */
     public static class RelationMemberTableModel extends DefaultTableModel {
-        private List<RelationToChildReference> data;
+        private transient List<RelationToChildReference> data;
 
         /**
Index: /trunk/src/org/openstreetmap/josm/gui/bbox/SizeButton.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bbox/SizeButton.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/bbox/SizeButton.java	(revision 8308)
@@ -35,5 +35,5 @@
     }
 
-    private final MouseAdapter mouseListener = new MouseAdapter() {
+    private final transient MouseAdapter mouseListener = new MouseAdapter() {
         @Override
         public void mouseReleased(MouseEvent e) {
Index: /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 8308)
@@ -117,10 +117,10 @@
     public static final String RESIZE_PROP = SlippyMapBBoxChooser.class.getName() + ".resize";
 
-    private TileLoader cachedLoader;
-    private OsmTileLoader uncachedLoader;
+    private transient TileLoader cachedLoader;
+    private transient OsmTileLoader uncachedLoader;
 
     private final SizeButton iSizeButton;
     private final SourceButton iSourceButton;
-    private Bounds bbox;
+    private transient Bounds bbox;
 
     // upper left and lower right corners of the selection rectangle (x/y on ZOOM_MAX)
Index: /trunk/src/org/openstreetmap/josm/gui/bbox/SourceButton.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bbox/SourceButton.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/bbox/SourceButton.java	(revision 8308)
@@ -29,5 +29,5 @@
     private static final int BOTTOM_PADDING = 5;
 
-    private TileSource[] sources;
+    private transient TileSource[] sources;
 
     private final ImageIcon enlargeImage;
@@ -57,5 +57,5 @@
     }
 
-    private final MouseListener mouseListener = new MouseAdapter() {
+    private final transient MouseListener mouseListener = new MouseAdapter() {
         @Override
         public void mouseReleased(MouseEvent e) {
Index: /trunk/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java	(revision 8308)
@@ -83,5 +83,5 @@
 
     /** the current bounding box */
-    private Bounds bbox;
+    private transient Bounds bbox;
     /** the map viewer showing the selected bounding box */
     private TileBoundsMapView mapViewer;
@@ -224,10 +224,10 @@
         private JosmTextField tfMaxX;
         private JosmTextField tfMinX;
-        private TileCoordinateValidator valMaxY;
-        private TileCoordinateValidator valMinY;
-        private TileCoordinateValidator valMaxX;
-        private TileCoordinateValidator valMinX;
+        private transient TileCoordinateValidator valMaxY;
+        private transient TileCoordinateValidator valMinY;
+        private transient TileCoordinateValidator valMaxX;
+        private transient TileCoordinateValidator valMinX;
         private JSpinner spZoomLevel;
-        private TileBoundsBuilder tileBoundsBuilder = new TileBoundsBuilder();
+        private transient TileBoundsBuilder tileBoundsBuilder = new TileBoundsBuilder();
         private boolean doFireTileBoundChanged = true;
 
@@ -442,5 +442,5 @@
 
         private JosmTextField tfTileAddress;
-        private TileAddressValidator valTileAddress;
+        private transient TileAddressValidator valTileAddress;
 
         protected JPanel buildTextPanel() {
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ConflictResolver.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ConflictResolver.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ConflictResolver.java	(revision 8308)
@@ -72,8 +72,8 @@
     private RelationMemberMerger relationMemberMerger;
     private PropertiesMerger propertiesMerger;
-    private final List<IConflictResolver> conflictResolvers = new ArrayList<>();
-    private OsmPrimitive my;
-    private OsmPrimitive their;
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final transient List<IConflictResolver> conflictResolvers = new ArrayList<>();
+    private transient OsmPrimitive my;
+    private transient OsmPrimitive their;
+    private transient Conflict<? extends OsmPrimitive> conflict;
 
     private ImageIcon mergeComplete;
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java	(revision 8308)
@@ -729,5 +729,5 @@
      */
     protected class EntriesSelectionModel extends DefaultListSelectionModel {
-        private final List<T> entries;
+        private final transient List<T> entries;
 
         public EntriesSelectionModel(ArrayList<T> nodes) {
@@ -823,5 +823,5 @@
 
         private int selectedIdx;
-        private final List<ComparePairType> compareModes;
+        private final transient List<ComparePairType> compareModes;
 
         /**
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java	(revision 8308)
@@ -53,5 +53,5 @@
     protected OsmPrimitivesTable theirEntriesTable;
 
-    protected ListMergeModel<T> model;
+    protected transient ListMergeModel<T> model;
 
     private CopyStartLeftAction copyStartLeftAction;
@@ -72,5 +72,5 @@
     private FreezeAction freezeAction;
 
-    private AdjustmentSynchronizer adjustmentSynchronizer;
+    private transient AdjustmentSynchronizer adjustmentSynchronizer;
 
     private  JLabel lblMyVersion;
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java	(revision 8308)
@@ -14,6 +14,6 @@
 public abstract class PairTable extends OsmPrimitivesTable {
 
-    private final ListMergeModel<? extends PrimitiveId> model;
-    
+    private final transient ListMergeModel<? extends PrimitiveId> model;
+
     public PairTable(String name, ListMergeModel<? extends PrimitiveId> model, OsmPrimitivesTableModel dm, TableColumnModel cm, ListSelectionModel sm) {
         super(dm, cm, sm);
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 8308)
@@ -25,5 +25,5 @@
 
     private final ImageIcon icon;
-    private final Border rowNumberBorder;
+    private final transient Border rowNumberBorder;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(revision 8308)
@@ -289,5 +289,5 @@
         if (myCoords != null && theirCoords == null) return true;
         if (myCoords == null && theirCoords == null) return false;
-        return !myCoords.equalsEpsilon(theirCoords);
+        return myCoords != null && !myCoords.equalsEpsilon(theirCoords);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 8308)
@@ -48,5 +48,5 @@
     private JLabel lblTheirReferrers;
 
-    private final PropertiesMergeModel model;
+    private final transient PropertiesMergeModel model;
 
     protected JLabel buildValueLabel(String name) {
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 8308)
@@ -23,5 +23,5 @@
  */
 public  class RelationMemberTableCellRenderer extends JLabel implements TableCellRenderer {
-    private  Border rowNumberBorder = null;
+    private transient Border rowNumberBorder = null;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModel.java	(revision 8308)
@@ -33,11 +33,14 @@
 
     /** the list of tag merge items */
-    private final List<TagMergeItem> tagMergeItems;
+    private final transient List<TagMergeItem> tagMergeItems;
 
     /** the property change listeners */
-    private final List<PropertyChangeListener> listeners;
+    private final transient List<PropertyChangeListener> listeners;
 
     private int numUndecidedTags = 0;
 
+    /**
+     * Constructs a new {@code TagMergeModel}.
+     */
     public TagMergeModel() {
         tagMergeItems = new ArrayList<>();
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java	(revision 8308)
@@ -42,5 +42,5 @@
     private JTable theirTable;
     private final TagMergeModel model;
-    private AdjustmentSynchronizer adjustmentSynchronizer;
+    private transient AdjustmentSynchronizer adjustmentSynchronizer;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 8308)
@@ -116,5 +116,5 @@
     private boolean canceled;
     private JPanel pnlButtons;
-    protected OsmPrimitive targetPrimitive;
+    protected transient OsmPrimitive targetPrimitive;
 
     /** the private help action */
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java	(revision 8308)
@@ -58,5 +58,5 @@
 
     private TagConflictResolver allPrimitivesResolver;
-    private Map<OsmPrimitiveType, TagConflictResolver> resolvers;
+    private transient Map<OsmPrimitiveType, TagConflictResolver> resolvers;
     private JTabbedPane tpResolvers;
     private Mode mode;
@@ -395,5 +395,5 @@
     private static class StatisticsTableModel extends DefaultTableModel {
         private static final String[] HEADERS = new String[] {tr("Paste ..."), tr("From ..."), tr("To ...") };
-        private List<StatisticsInfo> data;
+        private transient List<StatisticsInfo> data;
 
         public StatisticsTableModel() {
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java	(revision 8308)
@@ -34,5 +34,5 @@
     }
 
-    private final CellEditorSupport tableCellEditorSupport;
+    private final transient CellEditorSupport tableCellEditorSupport;
     private RelationMemberConflictDecisionType originalValue;
 
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 8308)
@@ -20,5 +20,5 @@
     private final DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer();
 
-    private final OsmPrimitivRenderer primitiveRenderer = new OsmPrimitivRenderer() {
+    private final transient OsmPrimitivRenderer primitiveRenderer = new OsmPrimitivRenderer() {
         @Override
         public Component getTableCellRendererComponent(JTable table,
@@ -29,5 +29,5 @@
     };
 
-    private final TableCellRenderer tableRenderer = new TableCellRenderer() {
+    private final transient TableCellRenderer tableRenderer = new TableCellRenderer() {
         @Override
         public Component getTableCellRendererComponent(JTable table, Object value,
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 8308)
@@ -31,7 +31,7 @@
 
     /** the list of conflict decisions */
-    protected final List<RelationMemberConflictDecision> decisions;
+    protected final transient List<RelationMemberConflictDecision> decisions;
     /** the collection of relations for which we manage conflicts */
-    protected Collection<Relation> relations;
+    protected transient Collection<Relation> relations;
     /** the number of conflicts */
     private int numConflicts;
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java	(revision 8308)
@@ -22,8 +22,8 @@
     public static final String NUM_CONFLICTS_PROP = TagConflictResolverModel.class.getName() + ".numConflicts";
 
-    private TagCollection tags;
-    private List<String> displayedKeys;
-    private Set<String> keysWithConflicts;
-    private Map<String, MultiValueResolutionDecision> decisions;
+    private transient TagCollection tags;
+    private transient List<String> displayedKeys;
+    private transient Set<String> keysWithConflicts;
+    private transient Map<String, MultiValueResolutionDecision> decisions;
     private int numConflicts;
     private PropertyChangeSupport support;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandListMutableTreeNode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandListMutableTreeNode.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandListMutableTreeNode.java	(revision 8308)
@@ -12,5 +12,5 @@
 public class CommandListMutableTreeNode extends DefaultMutableTreeNode {
 
-    protected PseudoCommand cmd;
+    protected transient PseudoCommand cmd;
     protected int idx;
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 8308)
@@ -63,6 +63,6 @@
     private final JTree redoTree = new JTree(redoTreeModel);
 
-    private UndoRedoSelectionListener undoSelectionListener;
-    private UndoRedoSelectionListener redoSelectionListener;
+    private transient UndoRedoSelectionListener undoSelectionListener;
+    private transient UndoRedoSelectionListener redoSelectionListener;
 
     private JScrollPane scrollPane;
@@ -246,5 +246,5 @@
      * Simple listener setup to update the button enabled state when the side dialog shows.
      */
-    private Set<IEnabledStateUpdating> showNotifyListener = new LinkedHashSet<>();
+    private transient Set<IEnabledStateUpdating> showNotifyListener = new LinkedHashSet<>();
 
     private void addShowNotifyListener(IEnabledStateUpdating listener) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 8308)
@@ -77,13 +77,13 @@
 
     /** the collection of conflicts displayed by this conflict dialog */
-    private ConflictCollection conflicts;
+    private transient ConflictCollection conflicts;
 
     /** the model for the list of conflicts */
-    private ConflictListModel model;
+    private transient ConflictListModel model;
     /** the list widget for the list of conflicts */
     private JList<OsmPrimitive> lstConflicts;
 
     private final JPopupMenu popupMenu = new JPopupMenu();
-    private final PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
+    private final transient PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
 
     private ResolveAction actResolve;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 8308)
@@ -19,5 +19,5 @@
 
 public class DialogsPanel extends JPanel implements Destroyable {
-    protected List<ToggleDialog> allDialogs = new ArrayList<>();
+    protected transient List<ToggleDialog> allDialogs = new ArrayList<>();
     protected MultiSplitPane mSpltPane = new MultiSplitPane();
     protected static final int DIVIDER_SIZE = 5;
@@ -26,5 +26,5 @@
      * Panels that are added to the multisplitpane.
      */
-    private List<JPanel> panels = new ArrayList<>();
+    private transient List<JPanel> panels = new ArrayList<>();
 
     private final JSplitPane parent;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 8308)
@@ -368,5 +368,5 @@
     abstract class AbstractFilterAction extends AbstractAction implements MultikeyShortcutAction {
 
-        protected Filter lastFilter;
+        protected transient Filter lastFilter;
 
         @Override
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 8308)
@@ -54,6 +54,6 @@
     }
 
-    private final List<Filter> filters = new LinkedList<>();
-    private final FilterMatcher filterMatcher = new FilterMatcher();
+    private final transient List<Filter> filters = new LinkedList<>();
+    private final transient FilterMatcher filterMatcher = new FilterMatcher();
 
     private void updateFilters() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 8308)
@@ -60,6 +60,6 @@
 public class InspectPrimitiveDialog extends ExtendedDialog {
 
-    protected List<OsmPrimitive> primitives;
-    protected OsmDataLayer layer;
+    protected transient List<OsmPrimitive> primitives;
+    protected transient OsmDataLayer layer;
     private JosmTextArea txtMappaint;
     private boolean mappaintTabLoaded;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 8308)
@@ -133,5 +133,5 @@
     }
 
-    private final Shortcut[] visibilityToggleShortcuts = new Shortcut[10];
+    private final transient Shortcut[] visibilityToggleShortcuts = new Shortcut[10];
     private final ToggleLayerIndexVisibility[] visibilityToggleActions = new ToggleLayerIndexVisibility[10];
 
@@ -440,6 +440,6 @@
     public final class ShowHideLayerAction extends AbstractAction implements IEnabledStateUpdating, LayerAction, MultikeyShortcutAction {
 
-        private WeakReference<Layer> lastLayer;
-        private Shortcut multikeyShortcut;
+        private transient WeakReference<Layer> lastLayer;
+        private transient Shortcut multikeyShortcut;
 
         /**
@@ -526,5 +526,5 @@
      */
     public final class LayerOpacityAction extends AbstractAction implements IEnabledStateUpdating, LayerAction {
-        private Layer layer;
+        private transient Layer layer;
         private JPopupMenu popup;
         private JSlider slider = new JSlider(JSlider.VERTICAL);
@@ -637,6 +637,6 @@
 
     public final class ActivateLayerAction extends AbstractAction implements IEnabledStateUpdating, MapView.LayerChangeListener, MultikeyShortcutAction{
-        private  Layer layer;
-        private Shortcut multikeyShortcut;
+        private transient Layer layer;
+        private transient Shortcut multikeyShortcut;
 
         /**
@@ -749,5 +749,5 @@
      */
     public final class MergeAction extends AbstractAction implements IEnabledStateUpdating {
-        private  Layer layer;
+        private transient Layer layer;
 
         /**
@@ -824,5 +824,5 @@
      */
     public final class DuplicateAction extends AbstractAction implements IEnabledStateUpdating {
-        private Layer layer;
+        private transient Layer layer;
 
         /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java	(revision 8308)
@@ -32,5 +32,5 @@
 
     public static final class InfoAction extends AbstractAction {
-        private final Layer layer;
+        private final transient Layer layer;
 
         /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 8308)
@@ -206,5 +206,5 @@
     protected class StylesModel extends AbstractTableModel implements MapPaintSylesUpdateListener {
 
-        private List<StyleSource> data = new ArrayList<>();
+        private transient List<StyleSource> data = new ArrayList<>();
 
         public StylesModel() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 8308)
@@ -87,5 +87,5 @@
     private final UploadNotesAction uploadAction;
 
-    private NoteData noteData;
+    private transient NoteData noteData;
 
     /** Creates a new toggle dialog for notes */
@@ -261,5 +261,5 @@
 
     class NoteTableModel extends AbstractListModel<Note> {
-        private List<Note> data;
+        private transient List<Note> data;
 
         public NoteTableModel() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java	(revision 8308)
@@ -51,5 +51,5 @@
     protected final OsmIdTextField tfId = new OsmIdTextField();
     protected final HistoryComboBox cbId = new HistoryComboBox();
-    protected final GroupLayout layout = new GroupLayout(panel);
+    protected final transient GroupLayout layout = new GroupLayout(panel);
 
     public OsmIdSelectionDialog(Component parent, String title, String[] buttonTexts) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 8308)
@@ -96,5 +96,5 @@
     /** the popup menu and its handler */
     private final JPopupMenu popupMenu = new JPopupMenu();
-    private final PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
+    private final transient PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
 
     private final JosmTextField filter;
@@ -116,5 +116,5 @@
     private final AddSelectionToRelations addSelectionToRelations = new AddSelectionToRelations();
 
-    private final HighlightHelper highlightHelper = new HighlightHelper();
+    private final transient HighlightHelper highlightHelper = new HighlightHelper();
     private boolean highlightEnabled = Main.pref.getBoolean("draw.target-highlight", true);
 
@@ -390,8 +390,8 @@
      */
     private class RelationListModel extends AbstractListModel<Relation> {
-        private final List<Relation> relations = new ArrayList<>();
-        private List<Relation> filteredRelations;
+        private final transient List<Relation> relations = new ArrayList<>();
+        private transient List<Relation> filteredRelations;
         private DefaultListSelectionModel selectionModel;
-        private SearchCompiler.Match filter;
+        private transient SearchCompiler.Match filter;
 
         public RelationListModel(DefaultListSelectionModel selectionModel) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 8308)
@@ -98,5 +98,5 @@
     /** the popup menu and its handler */
     private final ListPopupMenu popupMenu;
-    private final PopupMenuHandler popupMenuHandler;
+    private final transient PopupMenuHandler popupMenuHandler;
 
     /**
@@ -477,5 +477,5 @@
         // Variable to store history from currentDataSet()
         private LinkedList<Collection<? extends OsmPrimitive>> history;
-        private final List<OsmPrimitive> selection = new ArrayList<>();
+        private final transient List<OsmPrimitive> selection = new ArrayList<>();
         private DefaultListSelectionModel selectionModel;
 
@@ -737,5 +737,5 @@
      */
     protected static class SearchMenuItem extends JMenuItem implements ActionListener {
-        protected final SearchSetting s;
+        protected final transient SearchSetting s;
 
         public SearchMenuItem(SearchSetting s) {
@@ -778,6 +778,6 @@
      */
     protected static class SelectionMenuItem extends JMenuItem implements ActionListener {
-        private final DefaultNameFormatter df = DefaultNameFormatter.getInstance();
-        protected Collection<? extends OsmPrimitive> sel;
+        private final transient DefaultNameFormatter df = DefaultNameFormatter.getInstance();
+        protected transient Collection<? extends OsmPrimitive> sel;
 
         public SelectionMenuItem(Collection<? extends OsmPrimitive> sel) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 8308)
@@ -95,5 +95,5 @@
     public static final BooleanProperty PROP_DYNAMIC_BUTTONS = new BooleanProperty("dialog.dynamic.buttons", false);
 
-    private final ParametrizedEnumProperty<ButtonHidingType> PROP_BUTTON_HIDING = new ParametrizedEnumProperty<ToggleDialog.ButtonHidingType>(
+    private final transient ParametrizedEnumProperty<ButtonHidingType> PROP_BUTTON_HIDING = new ParametrizedEnumProperty<ToggleDialog.ButtonHidingType>(
             ButtonHidingType.class, ButtonHidingType.DYNAMIC) {
         @Override
@@ -152,5 +152,5 @@
     protected JToggleButton button;
     private JPanel buttonsPanel;
-    private List<javax.swing.Action> buttonActions = new ArrayList<>();
+    private transient List<javax.swing.Action> buttonActions = new ArrayList<>();
 
     /** holds the menu entry in the windows menu. Required to properly
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 8308)
@@ -279,5 +279,5 @@
      */
     static class UserTableModel extends DefaultTableModel {
-        private List<UserInfo> data;
+        private transient List<UserInfo> data;
 
         public UserTableModel() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 8308)
@@ -78,10 +78,10 @@
 
     private final JPopupMenu popupMenu = new JPopupMenu();
-    private final PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
+    private final transient PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
 
     /** Last selected element */
     private DefaultMutableTreeNode lastSelectedNode = null;
 
-    private OsmDataLayer linkedLayer;
+    private transient OsmDataLayer linkedLayer;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java	(revision 8308)
@@ -30,7 +30,7 @@
     public static final String CHANGESET_IN_DETAIL_VIEW_PROP = ChangesetCacheManagerModel.class.getName() + ".changesetInDetailView";
 
-    private final List<Changeset> data = new ArrayList<>();
+    private final transient List<Changeset> data = new ArrayList<>();
     private DefaultListSelectionModel selectionModel;
-    private Changeset changesetInDetailView;
+    private transient Changeset changesetInDetailView;
     private final PropertyChangeSupport support = new PropertyChangeSupport(this);
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 8308)
@@ -62,5 +62,5 @@
 
     private ChangesetContentTableModel model;
-    private Changeset currentChangeset;
+    private transient Changeset currentChangeset;
 
     private DownloadChangesetContentAction actDownloadContentAction;
@@ -421,5 +421,5 @@
 
         private JMultilineLabel lblMessage;
-        private Changeset current;
+        private transient Changeset current;
 
         protected final void build() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java	(revision 8308)
@@ -24,5 +24,5 @@
 public class ChangesetContentTableModel extends AbstractTableModel {
 
-    private final List<ChangesetContentEntry> data = new ArrayList<>();
+    private final transient List<ChangesetContentEntry> data = new ArrayList<>();
     private DefaultListSelectionModel selectionModel;
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(revision 8308)
@@ -64,5 +64,5 @@
     private final ZoomInCurrentLayerAction       actZoomInCurrentLayerAction = new ZoomInCurrentLayerAction();
 
-    private Changeset current = null;
+    private transient Changeset current = null;
 
     protected JPanel buildActionButtonPanel() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java	(revision 8308)
@@ -40,5 +40,5 @@
     private JTable table;
 
-    private Changeset current = null;
+    private transient Changeset current = null;
 
     protected JPanel buildActionButtonPanel() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionTableModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionTableModel.java	(revision 8308)
@@ -15,5 +15,5 @@
 public class ChangesetDiscussionTableModel extends AbstractTableModel {
 
-    private final List<ChangesetDiscussionComment> data = new ArrayList<>();
+    private final transient List<ChangesetDiscussionComment> data = new ArrayList<>();
 
     @Override
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java	(revision 8308)
@@ -22,6 +22,6 @@
 
 public class ChangesetListModel extends DefaultListModel<Changeset> implements ChangesetCacheListener {
-    private final List<Changeset> data = new ArrayList<>();
-    private final Storage<Changeset> shownChangesets = new Storage<>(true);
+    private final transient List<Changeset> data = new ArrayList<>();
+    private final transient Storage<Changeset> shownChangesets = new Storage<>(true);
     private DefaultListSelectionModel selectionModel;
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java	(revision 8308)
@@ -379,7 +379,7 @@
         private JRadioButton rbRestrictToUserName;
         private JosmTextField tfUid;
-        private UidInputFieldValidator valUid;
+        private transient UidInputFieldValidator valUid;
         private JosmTextField tfUserName;
-        private UserNameInputValidator valUserName;
+        private transient UserNameInputValidator valUserName;
         private JMultilineLabel lblRestrictedToMyself;
 
@@ -639,15 +639,15 @@
         private JRadioButton rbClosedAfterAndCreatedBefore;
         private JosmTextField tfClosedAfterDate1;
-        private DateValidator valClosedAfterDate1;
+        private transient DateValidator valClosedAfterDate1;
         private JosmTextField tfClosedAfterTime1;
-        private TimeValidator valClosedAfterTime1;
+        private transient TimeValidator valClosedAfterTime1;
         private JosmTextField tfClosedAfterDate2;
-        private DateValidator valClosedAfterDate2;
+        private transient DateValidator valClosedAfterDate2;
         private JosmTextField tfClosedAfterTime2;
-        private TimeValidator valClosedAfterTime2;
+        private transient TimeValidator valClosedAfterTime2;
         private JosmTextField tfCreatedBeforeDate;
-        private DateValidator valCreatedBeforeDate;
+        private transient DateValidator valCreatedBeforeDate;
         private JosmTextField tfCreatedBeforeTime;
-        private TimeValidator valCreatedBeforeTime;
+        private transient TimeValidator valCreatedBeforeTime;
 
         protected JPanel buildClosedAfterInputPanel() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 8308)
@@ -41,6 +41,6 @@
     }
 
-    private Map<BasicQuery, JRadioButton> rbQueries;
-    private Map<BasicQuery, JMultilineLabel> lblQueries;
+    private transient Map<BasicQuery, JRadioButton> rbQueries;
+    private transient Map<BasicQuery, JMultilineLabel> lblQueries;
     private JCheckBox cbMyChangesetsOnly;
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 8308)
@@ -153,15 +153,15 @@
 
     // Popup menu handlers
-    private final PopupMenuHandler tagMenuHandler = new PopupMenuHandler(tagMenu);
-    private final PopupMenuHandler membershipMenuHandler = new PopupMenuHandler(membershipMenu);
-    private final PopupMenuHandler blankSpaceMenuHandler = new PopupMenuHandler(blankSpaceMenu);
-
-    private final Map<String, Map<String, Integer>> valueCount = new TreeMap<>();
+    private final transient PopupMenuHandler tagMenuHandler = new PopupMenuHandler(tagMenu);
+    private final transient PopupMenuHandler membershipMenuHandler = new PopupMenuHandler(membershipMenu);
+    private final transient PopupMenuHandler blankSpaceMenuHandler = new PopupMenuHandler(blankSpaceMenu);
+
+    private final transient Map<String, Map<String, Integer>> valueCount = new TreeMap<>();
     /**
      * This sub-object is responsible for all adding and editing of tags
      */
-    private final TagEditHelper editHelper = new TagEditHelper(tagData, valueCount);
-
-    private final DataSetListenerAdapter dataChangedAdapter = new DataSetListenerAdapter(this);
+    private final transient TagEditHelper editHelper = new TagEditHelper(tagData, valueCount);
+
+    private final transient DataSetListenerAdapter dataChangedAdapter = new DataSetListenerAdapter(this);
     private final HelpAction helpAction = new HelpAction();
     private final PasteValueAction pasteValueAction = new PasteValueAction();
@@ -187,5 +187,5 @@
     private final SelectMembersAction addMembersToSelectionAction = new SelectMembersAction(true);
 
-    private final HighlightHelper highlightHelper= new HighlightHelper();
+    private final transient HighlightHelper highlightHelper= new HighlightHelper();
 
     /**
@@ -212,5 +212,5 @@
             + tr("Select objects for which to change tags.") + "</p></html>");
 
-    private final PresetHandler presetHandler = new PresetHandler() {
+    private final transient PresetHandler presetHandler = new PresetHandler() {
         @Override public void updateTags(List<Tag> tags) {
             Command command = TaggingPreset.createCommand(getSelection(), tags);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 8308)
@@ -242,7 +242,7 @@
     public final class EditTagDialog extends AbstractTagsDialog {
         private final String key;
-        private final Map<String, Integer> m;
-
-        private Comparator<AutoCompletionListItem> usedValuesAwareComparator = new Comparator<AutoCompletionListItem>() {
+        private final transient Map<String, Integer> m;
+
+        private transient Comparator<AutoCompletionListItem> usedValuesAwareComparator = new Comparator<AutoCompletionListItem>() {
                 @Override
                 public int compare(AutoCompletionListItem o1, AutoCompletionListItem o2) {
@@ -258,5 +258,5 @@
             };
 
-        private ListCellRenderer<AutoCompletionListItem> cellRenderer = new ListCellRenderer<AutoCompletionListItem>() {
+        private transient ListCellRenderer<AutoCompletionListItem> cellRenderer = new ListCellRenderer<AutoCompletionListItem>() {
             private final DefaultListCellRenderer def = new DefaultListCellRenderer();
             @Override
@@ -532,5 +532,5 @@
 
     class AddTagsDialog extends AbstractTagsDialog {
-        private List<JosmAction> recentTagsActions = new ArrayList<>();
+        private transient List<JosmAction> recentTagsActions = new ArrayList<>();
 
         // Counter of added commands for possible undo
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 8308)
@@ -58,8 +58,8 @@
     private RelationTree childTree;
     /**  the tree model */
-    private RelationTreeModel model;
+    private transient RelationTreeModel model;
 
     /** the osm data layer this browser is related to */
-    private OsmDataLayer layer;
+    private transient OsmDataLayer layer;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java	(revision 8308)
@@ -16,6 +16,6 @@
 public class MemberRoleCellEditor extends AbstractCellEditor implements TableCellEditor {
     private AutoCompletingTextField editor = null;
-    private final DataSet ds;
-    private final Relation relation;
+    private final transient DataSet ds;
+    private final transient Relation relation;
 
     /** user input is matched against this list of auto completion items */
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 8308)
@@ -45,5 +45,5 @@
     /** the additional actions in popup menu */
     private ZoomToGapAction zoomToGap;
-    private HighlightHelper highlightHelper = new HighlightHelper();
+    private transient HighlightHelper highlightHelper = new HighlightHelper();
     private boolean highlightEnabled;
 
@@ -122,5 +122,5 @@
     }
 
-    private ListSelectionListener highlighterListener = new ListSelectionListener() {
+    private transient ListSelectionListener highlighterListener = new ListSelectionListener() {
             @Override
             public void valueChanged(ListSelectionEvent lse) {
@@ -269,4 +269,7 @@
     private class ZoomToGapAction extends AbstractAction implements LayerChangeListener, ListSelectionListener {
 
+        /**
+         * Constructs a new {@code ZoomToGapAction}.
+         */
         public ZoomToGapAction() {
             putValue(NAME, tr("Zoom to Gap"));
@@ -279,5 +282,6 @@
         }
 
-        private final Collection<Direction> connectionTypesOfInterest = Arrays.asList(WayConnectionType.Direction.FORWARD, WayConnectionType.Direction.BACKWARD);
+        private final transient Collection<Direction> connectionTypesOfInterest = Arrays.asList(
+                WayConnectionType.Direction.FORWARD, WayConnectionType.Direction.BACKWARD);
 
         private boolean hasGap() {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java	(revision 8308)
@@ -22,5 +22,5 @@
     private static final Image roundabout_right = ImageProvider.get("dialogs/relation", "roundabout_right_tiny").getImage();
     private static final Image roundabout_left = ImageProvider.get("dialogs/relation", "roundabout_left_tiny").getImage();
-    private WayConnectionType value = new WayConnectionType();
+    private transient WayConnectionType value = new WayConnectionType();
 
     @Override
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 8308)
@@ -49,14 +49,14 @@
      * data of the table model: The list of members and the cached WayConnectionType of each member.
      **/
-    private List<RelationMember> members;
-    private List<WayConnectionType> connectionType = null;
+    private transient List<RelationMember> members;
+    private transient List<WayConnectionType> connectionType = null;
 
     private DefaultListSelectionModel listSelectionModel;
     private final CopyOnWriteArrayList<IMemberModelListener> listeners;
-    private final OsmDataLayer layer;
-    private final PresetHandler presetHandler;
-
-    private final WayConnectionTypeCalculator wayConnectionTypeCalculator = new WayConnectionTypeCalculator();
-    private final RelationSorter relationSorter = new RelationSorter();
+    private final transient OsmDataLayer layer;
+    private final transient PresetHandler presetHandler;
+
+    private final transient WayConnectionTypeCalculator wayConnectionTypeCalculator = new WayConnectionTypeCalculator();
+    private final transient RelationSorter relationSorter = new RelationSorter();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java	(revision 8308)
@@ -38,5 +38,5 @@
     private JList<Relation> referrers;
     private ReferringRelationsBrowserModel model;
-    private OsmDataLayer layer;
+    private transient OsmDataLayer layer;
     private JCheckBox cbReadFull;
     private EditAction editAction;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java	(revision 8308)
@@ -14,6 +14,6 @@
 
     /** the relation */
-    private Relation relation;
-    private List<Relation> referrers;
+    private transient Relation relation;
+    private transient List<Relation> referrers;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 8308)
@@ -51,13 +51,13 @@
      * The relation that this editor is working on.
      */
-    private Relation relation;
+    private transient Relation relation;
 
     /**
      * The version of the relation when editing is started.  This is
      * null if a new relation is created. */
-    private Relation relationSnapshot;
+    private transient Relation relationSnapshot;
 
     /** the data layer the relation belongs to */
-    private OsmDataLayer layer;
+    private transient OsmDataLayer layer;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 8308)
@@ -19,6 +19,6 @@
 
     /** this selection table model only displays selected primitives in this layer */
-    private OsmDataLayer layer;
-    private List<OsmPrimitive> cache;
+    private transient OsmDataLayer layer;
+    private transient List<OsmPrimitive> cache;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 8308)
@@ -61,5 +61,5 @@
 
     /** The list of errors shown in the tree */
-    private List<TestError> errors = new ArrayList<>();
+    private transient List<TestError> errors = new ArrayList<>();
 
     /**
@@ -67,5 +67,5 @@
      * that refer to one of the primitives in the filter.
      */
-    private Set<OsmPrimitive> filter = null;
+    private transient Set<OsmPrimitive> filter = null;
 
     /** a counter to check if tree has been rebuild */
Index: /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 8308)
@@ -70,10 +70,10 @@
 
     protected SlippyMapChooser slippyMapChooser;
-    protected final List<DownloadSelection> downloadSelections = new ArrayList<>();
+    protected final transient List<DownloadSelection> downloadSelections = new ArrayList<>();
     protected final JTabbedPane tpDownloadAreaSelectors = new JTabbedPane();
     protected JCheckBox cbNewLayer;
     protected JCheckBox cbStartup;
     protected final JLabel sizeCheck = new JLabel();
-    protected Bounds currentBounds = null;
+    protected transient Bounds currentBounds = null;
     protected boolean canceled;
 
Index: /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 8308)
@@ -328,5 +328,5 @@
         private String searchExpression;
         private HttpURLConnection connection;
-        private List<SearchResult> data;
+        private transient List<SearchResult> data;
         private boolean canceled = false;
         private Server useserver;
@@ -409,6 +409,6 @@
 
     static class NamedResultTableModel extends DefaultTableModel {
-        private List<SearchResult> data;
-        private ListSelectionModel selectionModel;
+        private transient List<SearchResult> data;
+        private transient ListSelectionModel selectionModel;
 
         public NamedResultTableModel(ListSelectionModel selectionModel) {
Index: /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 8308)
@@ -114,10 +114,10 @@
 
     /** the help browser history */
-    private HelpBrowserHistory history;
+    private transient HelpBrowserHistory history;
 
     /** the currently displayed URL */
     private String url;
 
-    private HelpContentReader reader;
+    private transient HelpContentReader reader;
 
     private static final JosmAction focusAction = new JosmAction(tr("JOSM Help Browser"), "help", "", null, false, false) {
@@ -483,5 +483,5 @@
 
     static class BackAction extends AbstractAction implements Observer {
-        private HelpBrowserHistory history;
+        private transient HelpBrowserHistory history;
         public BackAction(HelpBrowserHistory history) {
             this.history = history;
@@ -503,5 +503,5 @@
 
     static class ForwardAction extends AbstractAction implements Observer {
-        private HelpBrowserHistory history;
+        private transient HelpBrowserHistory history;
         public ForwardAction(HelpBrowserHistory history) {
             this.history = history;
Index: /trunk/src/org/openstreetmap/josm/gui/help/HelpContentReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/help/HelpContentReader.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/help/HelpContentReader.java	(revision 8308)
@@ -44,5 +44,5 @@
     public String fetchHelpTopicContent(String helpTopicUrl, boolean dotest) throws HelpContentReaderException {
         if(helpTopicUrl == null)
-            throw new MissingHelpContentException(helpTopicUrl);
+            throw new MissingHelpContentException("helpTopicUrl is null");
         HttpURLConnection con = null;
         try {
Index: /trunk/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java	(revision 8308)
@@ -32,5 +32,5 @@
 
     /** the model */
-    private HistoryBrowserModel model;
+    private transient HistoryBrowserModel model;
     /** the common info panel for the history node in role REFERENCE_POINT_IN_TIME */
     private VersionInfoPanel referenceInfoPanel;
@@ -171,5 +171,5 @@
         private JLabel lblLat;
         private JLabel lblLon;
-        private HistoryBrowserModel model;
+        private transient HistoryBrowserModel model;
         private PointInTimeType role;
 
Index: /trunk/src/org/openstreetmap/josm/gui/history/DiffTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/DiffTableModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/DiffTableModel.java	(revision 8308)
@@ -1,6 +1,4 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.history;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -16,5 +14,5 @@
  */
 class DiffTableModel extends AbstractTableModel {
-    private List<TwoColumnDiff.Item> rows = new ArrayList<>();
+    private transient List<TwoColumnDiff.Item> rows = new ArrayList<>();
     private boolean reversed = false;
 
Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 8308)
@@ -24,5 +24,5 @@
 
     /** the model */
-    private HistoryBrowserModel model;
+    private transient HistoryBrowserModel model;
     private TagInfoViewer tagInfoViewer;
     private NodeListViewer nodeListViewer;
Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 8308)
@@ -531,5 +531,5 @@
     public class TagTableModel extends AbstractTableModel {
 
-        private List<String> keys;
+        private transient List<String> keys;
         private PointInTimeType pointInTimeType;
 
Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryViewerPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryViewerPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryViewerPanel.java	(revision 8308)
@@ -17,10 +17,10 @@
  */
 public abstract class HistoryViewerPanel extends JPanel {
-    
-    protected HistoryBrowserModel model;
+
+    protected transient HistoryBrowserModel model;
     protected VersionInfoPanel referenceInfoPanel;
     protected VersionInfoPanel currentInfoPanel;
-    protected AdjustmentSynchronizer adjustmentSynchronizer;
-    protected SelectionSynchronizer selectionSynchronizer;
+    protected transient AdjustmentSynchronizer adjustmentSynchronizer;
+    protected transient SelectionSynchronizer selectionSynchronizer;
 
     protected HistoryViewerPanel(HistoryBrowserModel model) {
@@ -28,5 +28,5 @@
         build();
     }
-    
+
     private JScrollPane embedInScrollPane(JTable table) {
         JScrollPane pane = new JScrollPane(table);
@@ -34,5 +34,5 @@
         return pane;
     }
-    
+
     /**
      * Sets the history browsing model.
@@ -48,5 +48,5 @@
         }
     }
-    
+
     protected final void unregisterAsObserver(HistoryBrowserModel model) {
         if (currentInfoPanel != null) {
@@ -57,5 +57,5 @@
         }
     }
-    
+
     protected final void registerAsObserver(HistoryBrowserModel model) {
         if (currentInfoPanel != null) {
@@ -66,9 +66,9 @@
         }
     }
-    
+
     protected abstract JTable buildReferenceTable();
-    
+
     protected abstract JTable buildCurrentTable();
-    
+
     private void build() {
         setLayout(new GridBagLayout());
Index: /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 8308)
@@ -48,9 +48,9 @@
 public class NodeListViewer extends JPanel {
 
-    private HistoryBrowserModel model;
+    private transient HistoryBrowserModel model;
     private VersionInfoPanel referenceInfoPanel;
     private VersionInfoPanel currentInfoPanel;
-    private AdjustmentSynchronizer adjustmentSynchronizer;
-    private SelectionSynchronizer selectionSynchronizer;
+    private transient AdjustmentSynchronizer adjustmentSynchronizer;
+    private transient SelectionSynchronizer selectionSynchronizer;
     private NodeListPopupMenu popupMenu;
 
@@ -215,6 +215,9 @@
 
     static class ZoomToNodeAction extends AbstractAction {
-        private PrimitiveId primitiveId;
-
+        private transient PrimitiveId primitiveId;
+
+        /**
+         * Constructs a new {@code ZoomToNodeAction}.
+         */
         public ZoomToNodeAction() {
             putValue(NAME, tr("Zoom to node"));
@@ -258,6 +261,9 @@
 
     static class ShowHistoryAction extends AbstractAction {
-        private PrimitiveId primitiveId;
-
+        private transient PrimitiveId primitiveId;
+
+        /**
+         * Constructs a new {@code ShowHistoryAction}.
+         */
         public ShowHistoryAction() {
             putValue(NAME, tr("Show history"));
Index: /trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java	(revision 8308)
@@ -31,5 +31,5 @@
     public static final Color BGCOLOR_SELECTED = new Color(143,170,255);
 
-    private Map<OsmPrimitiveType, ImageIcon> icons;
+    private transient Map<OsmPrimitiveType, ImageIcon> icons;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 8308)
@@ -46,5 +46,5 @@
 public class VersionInfoPanel extends JPanel implements Observer{
     private PointInTimeType pointInTimeType;
-    private HistoryBrowserModel model;
+    private transient HistoryBrowserModel model;
     private JMultilineLabel lblInfo;
     private UrlLabel lblUser;
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 8308)
@@ -46,5 +46,5 @@
 public class VersionTable extends JTable implements Observer{
     private VersionTablePopupMenu popupMenu;
-    private final HistoryBrowserModel model;
+    private final transient HistoryBrowserModel model;
 
     protected void build() {
@@ -148,6 +148,9 @@
 
     static class ChangesetInfoAction extends AbstractInfoAction {
-        private HistoryOsmPrimitive primitive;
-
+        private transient HistoryOsmPrimitive primitive;
+
+        /**
+         * Constructs a new {@code ChangesetInfoAction}.
+         */
         public ChangesetInfoAction() {
             super(true);
@@ -178,6 +181,9 @@
 
     static class UserInfoAction extends AbstractInfoAction {
-        private HistoryOsmPrimitive primitive;
-
+        private transient HistoryOsmPrimitive primitive;
+
+        /**
+         * Constructs a new {@code UserInfoAction}.
+         */
         public UserInfoAction() {
             super(true);
Index: /trunk/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java	(revision 8308)
@@ -38,7 +38,7 @@
 class ActionFlagsTableCell extends JPanel implements TableCellRenderer, TableCellEditor {
     private final JCheckBox[] checkBoxes = new JCheckBox[2];
-    private final CellEditorSupport cellEditorSupport = new CellEditorSupport(this);
+    private final transient CellEditorSupport cellEditorSupport = new CellEditorSupport(this);
 
-    private ActionListener al = new ActionListener() {
+    private transient ActionListener al = new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
Index: /trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 8308)
@@ -49,6 +49,6 @@
     private final UploadParameterSummaryPanel pnlUploadParameterSummary = new UploadParameterSummaryPanel();
     /** the changeset comment model */
-    private final ChangesetCommentModel changesetCommentModel;
-    private final ChangesetCommentModel changesetSourceModel;
+    private final transient ChangesetCommentModel changesetCommentModel;
+    private final transient ChangesetCommentModel changesetSourceModel;
 
     protected JPanel buildUploadCommentPanel() {
Index: /trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java	(revision 8308)
@@ -56,5 +56,5 @@
     private JCheckBox cbCloseAfterUpload;
     private OpenChangesetComboBoxModel model;
-    private ChangesetCommentModel changesetCommentModel;
+    private transient ChangesetCommentModel changesetCommentModel;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java	(revision 8308)
@@ -42,5 +42,5 @@
     private static final GBC defaultCellStyle = GBC.eol().fill(GBC.HORIZONTAL).insets(2, 0, 2, 0);
 
-    private final CellEditorSupport cellEditorSupport = new CellEditorSupport(this);
+    private final transient CellEditorSupport cellEditorSupport = new CellEditorSupport(this);
     private File value;
 
Index: /trunk/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java	(revision 8308)
@@ -18,6 +18,6 @@
  */
 public class OpenChangesetComboBoxModel extends DefaultComboBoxModel<Changeset> implements ChangesetCacheListener {
-    private List<Changeset> changesets;
-    private Changeset selectedChangeset = null;
+    private transient List<Changeset> changesets;
+    private transient Changeset selectedChangeset = null;
 
     protected Changeset getChangesetById(long id) {
Index: /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 8308)
@@ -68,5 +68,5 @@
     private DiscardAndProceedAction discardAndProceedAction;
     private CancelAction cancelAction;
-    private SaveAndUploadTask saveAndUploadTask;
+    private transient SaveAndUploadTask saveAndUploadTask;
 
     /**
@@ -368,8 +368,8 @@
         private static final int is = 24; // icon size
         private static final String BASE_ICON = "BASE_ICON";
-        private final Image save = ImageProvider.get("save").getImage();
-        private final Image upld = ImageProvider.get("upload").getImage();
-        private final Image saveDis = new BufferedImage(is, is, BufferedImage.TYPE_4BYTE_ABGR);
-        private final Image upldDis = new BufferedImage(is, is, BufferedImage.TYPE_4BYTE_ABGR);
+        private final transient Image save = ImageProvider.get("save").getImage();
+        private final transient Image upld = ImageProvider.get("upload").getImage();
+        private final transient Image saveDis = new BufferedImage(is, is, BufferedImage.TYPE_4BYTE_ABGR);
+        private final transient Image upldDis = new BufferedImage(is, is, BufferedImage.TYPE_4BYTE_ABGR);
 
         public SaveAndProceedAction() {
Index: /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java	(revision 8308)
@@ -22,5 +22,5 @@
     }
 
-    private List<SaveLayerInfo> layerInfo;
+    private transient List<SaveLayerInfo> layerInfo;
     private Mode mode;
     private PropertyChangeSupport support;
Index: /trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java	(revision 8308)
@@ -24,8 +24,8 @@
     private final TagEditorPanel pnlTagEditor = new TagEditorPanel(null);
     /** the model for the changeset comment */
-    private final ChangesetCommentModel changesetCommentModel;
-    private final ChangesetCommentModel changesetSourceModel;
+    private final transient ChangesetCommentModel changesetCommentModel;
+    private final transient ChangesetCommentModel changesetSourceModel;
     /** tags that applied to uploaded changesets by default*/
-    private final Map<String, String> defaultTags = new HashMap<>();
+    private final transient Map<String, String> defaultTags = new HashMap<>();
 
     protected void build() {
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 8308)
@@ -98,6 +98,6 @@
 
     /** the changeset comment model keeping the state of the changeset comment */
-    private final ChangesetCommentModel changesetCommentModel = new ChangesetCommentModel();
-    private final ChangesetCommentModel changesetSourceModel = new ChangesetCommentModel();
+    private final transient ChangesetCommentModel changesetCommentModel = new ChangesetCommentModel();
+    private final transient ChangesetCommentModel changesetSourceModel = new ChangesetCommentModel();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java	(revision 8308)
@@ -22,12 +22,12 @@
 // FIXME this class should extend HtmlPanel instead (duplicated code in here)
 public class UploadParameterSummaryPanel extends JPanel implements HyperlinkListener, PropertyChangeListener{
-    private UploadStrategySpecification spec = new UploadStrategySpecification();
+    private transient UploadStrategySpecification spec = new UploadStrategySpecification();
     private int numObjects;
     private JMultilineLabel jepMessage;
     private JLabel lblWarning;
 
-    private Changeset selectedChangeset;
+    private transient Changeset selectedChangeset;
     private boolean closeChangesetAfterNextUpload;
-    private ConfigurationParameterRequestHandler configHandler;
+    private transient ConfigurationParameterRequestHandler configHandler;
 
     protected String buildChangesetSummary() {
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 8308)
@@ -194,5 +194,5 @@
 
     static class OsmPrimitiveListModel extends AbstractListModel<OsmPrimitive> {
-        private List<OsmPrimitive> data;
+        private transient List<OsmPrimitive> data;
 
         public OsmPrimitiveListModel() {
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(revision 8308)
@@ -51,7 +51,7 @@
     private static final Color BG_COLOR_ERROR = new Color(255,224,224);
 
-    private Map<UploadStrategy, JRadioButton> rbStrategy;
-    private Map<UploadStrategy, JLabel> lblNumRequests;
-    private Map<UploadStrategy, JMultilineLabel> lblStrategies;
+    private transient Map<UploadStrategy, JRadioButton> rbStrategy;
+    private transient Map<UploadStrategy, JLabel> lblNumRequests;
+    private transient Map<UploadStrategy, JMultilineLabel> lblStrategies;
     private JosmTextField tfChunkSize;
     private JPanel pnlMultiChangesetPolicyPanel;
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java	(revision 8308)
@@ -155,5 +155,5 @@
      */
     static class PrimitiveListModel extends AbstractListModel<OsmPrimitive> {
-        private List<OsmPrimitive> primitives;
+        private transient List<OsmPrimitive> primitives;
 
         public PrimitiveListModel() {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java	(revision 8308)
@@ -23,5 +23,5 @@
 
 public class CustomizeColor extends AbstractAction implements LayerAction, MultiLayerAction {
-    private List<Layer> layers;
+    private transient List<Layer> layers;
 
     public CustomizeColor(List<Layer> l) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 8308)
@@ -159,5 +159,5 @@
 
     class ApplyOffsetAction extends AbstractAction {
-        private OffsetBookmark b;
+        private transient OffsetBookmark b;
         ApplyOffsetAction(OffsetBookmark b) {
             super(b.name);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 8308)
@@ -44,7 +44,7 @@
     private abstract static class JumpToMarker extends AbstractAction implements MultikeyShortcutAction {
 
-        private final Layer layer;
-        private final Shortcut multikeyShortcut;
-        private WeakReference<Layer> lastLayer;
+        private final transient Layer layer;
+        private final transient Shortcut multikeyShortcut;
+        private transient WeakReference<Layer> lastLayer;
 
         public JumpToMarker(JumpToMarkerLayer layer, Shortcut shortcut) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 8308)
@@ -380,5 +380,5 @@
      */
     public static class LayerSaveAction extends AbstractAction {
-        private Layer layer;
+        private final transient Layer layer;
         public LayerSaveAction(Layer layer) {
             putValue(SMALL_ICON, ImageProvider.get("save"));
@@ -396,5 +396,5 @@
 
     public static class LayerSaveAsAction extends AbstractAction {
-        private Layer layer;
+        private final transient Layer layer;
         public LayerSaveAsAction(Layer layer) {
             putValue(SMALL_ICON, ImageProvider.get("save_as"));
@@ -412,5 +412,5 @@
 
     public static class LayerGpxExportAction extends AbstractAction {
-        private Layer layer;
+        private final transient Layer layer;
         public LayerGpxExportAction(Layer layer) {
             putValue(SMALL_ICON, ImageProvider.get("exportgpx"));
Index: /trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java	(revision 8308)
@@ -128,6 +128,6 @@
     protected boolean autoResolutionEnabled = PROP_DEFAULT_AUTOZOOM.get();
     protected boolean settingsChanged;
-    public WmsCache cache;
-    private AttributionSupport attribution = new AttributionSupport();
+    public transient WmsCache cache;
+    private transient AttributionSupport attribution = new AttributionSupport();
 
     // Image index boundary for current view
@@ -140,14 +140,14 @@
 
     // Request queue
-    private final List<WMSRequest> requestQueue = new ArrayList<>();
-    private final List<WMSRequest> finishedRequests = new ArrayList<>();
+    private final transient List<WMSRequest> requestQueue = new ArrayList<>();
+    private final transient List<WMSRequest> finishedRequests = new ArrayList<>();
     /**
      * List of request currently being processed by download threads
      */
-    private final List<WMSRequest> processingRequests = new ArrayList<>();
-    private final Lock requestQueueLock = new ReentrantLock();
-    private final Condition queueEmpty = requestQueueLock.newCondition();
-    private final List<WMSGrabber> grabbers = new ArrayList<>();
-    private final List<Thread> grabberThreads = new ArrayList<>();
+    private final transient List<WMSRequest> processingRequests = new ArrayList<>();
+    private final transient Lock requestQueueLock = new ReentrantLock();
+    private final transient Condition queueEmpty = requestQueueLock.newCondition();
+    private final transient List<WMSGrabber> grabbers = new ArrayList<>();
+    private final transient List<Thread> grabberThreads = new ArrayList<>();
     private boolean canceled;
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 8308)
@@ -91,5 +91,5 @@
     private static List<GpxData> loadedGpxData = new ArrayList<>();
 
-    private GeoImageLayer yLayer = null;
+    private transient GeoImageLayer yLayer = null;
     private double timezone;
     private long delta;
@@ -122,5 +122,5 @@
 
     private ExtendedDialog syncDialog;
-    private List<GpxDataWrapper> gpxLst = new ArrayList<>();
+    private transient List<GpxDataWrapper> gpxLst = new ArrayList<>();
     private JPanel outerPanel;
     private JosmComboBox<GpxDataWrapper> cbGpx;
@@ -764,6 +764,6 @@
     }
 
-    private StatusBarUpdater statusBarUpdater = new StatusBarUpdater(false);
-    private StatusBarUpdater statusBarUpdaterWithRepaint = new StatusBarUpdater(true);
+    private transient StatusBarUpdater statusBarUpdater = new StatusBarUpdater(false);
+    private transient StatusBarUpdater statusBarUpdaterWithRepaint = new StatusBarUpdater(true);
 
     private class StatusBarUpdater implements  DocumentListener, ItemListener, ActionListener {
@@ -835,5 +835,5 @@
     }
 
-    private RepaintTheMapListener repaintTheMap = new RepaintTheMapListener();
+    private transient RepaintTheMapListener repaintTheMap = new RepaintTheMapListener();
     private class RepaintTheMapListener implements FocusListener {
         @Override
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 8308)
@@ -35,5 +35,5 @@
 
     /** The image currently displayed */
-    private Image image = null;
+    private transient Image image = null;
 
     /** The image currently displayed */
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 8308)
@@ -274,6 +274,6 @@
     }
 
-    private GeoImageLayer currentLayer = null;
-    private ImageEntry currentEntry = null;
+    private transient GeoImageLayer currentLayer = null;
+    private transient ImageEntry currentEntry = null;
 
     public void displayImage(GeoImageLayer layer, ImageEntry entry) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java	(revision 8308)
@@ -7,4 +7,5 @@
 import java.awt.event.ActionEvent;
 import java.util.List;
+
 import javax.swing.AbstractAction;
 import javax.swing.JCheckBoxMenuItem;
@@ -21,5 +22,5 @@
 public class ShowThumbnailAction extends AbstractAction implements LayerAction {
 
-    private final GeoImageLayer layer;
+    private final transient GeoImageLayer layer;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 8308)
@@ -13,4 +13,5 @@
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
+import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -47,5 +48,5 @@
  */
 public class ChooseTrackVisibilityAction extends AbstractAction {
-    private final GpxLayer layer;
+    private final transient GpxLayer layer;
 
     private DateFilterPanel dateFilter;
@@ -89,5 +90,7 @@
      * Comparator for TrackLength objects
      */
-    private static final class LengthContentComparator implements Comparator<TrackLength> {
+    private static final class LengthContentComparator implements Comparator<TrackLength>, Serializable {
+
+        private static final long serialVersionUID = 1L;
 
         /**
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 8308)
@@ -32,5 +32,5 @@
 
 public class ConvertToDataLayerAction extends AbstractAction {
-    private final GpxLayer layer;
+    private final transient GpxLayer layer;
 
     public ConvertToDataLayerAction(final GpxLayer layer) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 8308)
@@ -29,5 +29,5 @@
 
 public class CustomizeDrawingAction extends AbstractAction implements LayerAction, MultiLayerAction {
-    private List<Layer> layers;
+    private transient List<Layer> layers;
 
     public CustomizeDrawingAction(List<Layer> l) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java	(revision 8308)
@@ -26,7 +26,7 @@
     private DateEditorWithSlider dateTo = new DateEditorWithSlider(tr("To"));
     private JCheckBox noTimestampCb  = new JCheckBox(tr("No timestamp"));
-    private GpxLayer layer;
+    private transient GpxLayer layer;
 
-    private ActionListener filterAppliedListener;
+    private transient ActionListener filterAppliedListener;
 
     private final String PREF_DATE_0;
@@ -67,5 +67,5 @@
     }
 
-    private ChangeListener changeListener = new ChangeListener() {
+    private transient ChangeListener changeListener = new ChangeListener() {
         @Override public void stateChanged(ChangeEvent e) {
             if (isEnabled()) applyFilterWithDelay();
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 8308)
@@ -37,5 +37,5 @@
     private static final String PREF_DOWNLOAD_ALONG_TRACK_NEAR = "downloadAlongTrack.near";
 
-    private final GpxData data;
+    private final transient GpxData data;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 8308)
@@ -37,5 +37,5 @@
 public class DownloadWmsAlongTrackAction extends AbstractAction {
 
-    private final GpxData data;
+    private final transient GpxData data;
 
     public DownloadWmsAlongTrackAction(final GpxData data) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 8308)
@@ -40,5 +40,5 @@
  */
 public class ImportAudioAction extends AbstractAction {
-    private final GpxLayer layer;
+    private final transient GpxLayer layer;
 
     private static class Markers {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 8308)
@@ -24,5 +24,5 @@
 
 public class ImportImagesAction extends AbstractAction {
-    private final GpxLayer layer;
+    private final transient GpxLayer layer;
 
     public ImportImagesAction(final GpxLayer layer) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java	(revision 8308)
@@ -19,5 +19,5 @@
 
 public class MarkersFromNamedPointsAction extends AbstractAction {
-    private final GpxLayer layer;
+    private final transient GpxLayer layer;
 
     public MarkersFromNamedPointsAction(final GpxLayer layer) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 8308)
@@ -468,5 +468,5 @@
 
     public static final class ShowHideMarkerText extends AbstractAction implements LayerAction {
-        private final MarkerLayer layer;
+        private final transient MarkerLayer layer;
 
         public ShowHideMarkerText(MarkerLayer layer) {
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java	(revision 8308)
@@ -30,5 +30,5 @@
     private static class MapPaintAction extends JosmAction {
 
-        private StyleSource style;
+        private transient StyleSource style;
         private JCheckBoxMenuItem button;
 
@@ -78,5 +78,5 @@
         }
     }
-    private final Map<String, MapPaintAction> actions = new HashMap<>();
+    private final transient Map<String, MapPaintAction> actions = new HashMap<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/AbstractAuthorizationUI.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/AbstractAuthorizationUI.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/AbstractAuthorizationUI.java	(revision 8308)
@@ -7,4 +7,6 @@
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+
+import com.sun.org.apache.xerces.internal.utils.Objects;
 
 /**
@@ -21,5 +23,5 @@
     private String apiUrl;
     private final AdvancedOAuthPropertiesPanel pnlAdvancedProperties;
-    private OAuthToken accessToken;
+    private transient OAuthToken accessToken;
 
     protected void fireAccessTokenChanged(OAuthToken oldValue, OAuthToken newValue) {
@@ -99,5 +101,5 @@
         } else if (oldValue == null && this.accessToken == null) {
             // no change - don't fire an event
-        } else if (! oldValue.equals(this.accessToken)) {
+        } else if (!Objects.equals(oldValue, this.accessToken)) {
             fireAccessTokenChanged(oldValue, this.accessToken);
         }
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/AdvancedOAuthPropertiesPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/AdvancedOAuthPropertiesPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/AdvancedOAuthPropertiesPanel.java	(revision 8308)
@@ -48,5 +48,5 @@
     private JosmTextField tfAccessTokenURL;
     private JosmTextField tfAuthoriseURL;
-    private UseDefaultItemListener ilUseDefault;
+    private transient UseDefaultItemListener ilUseDefault;
     private String apiUrl;
 
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java	(revision 8308)
@@ -60,6 +60,6 @@
     private JosmTextField tfUserName;
     private JosmPasswordField tfPassword;
-    private UserNameValidator valUserName;
-    private PasswordValidator valPassword;
+    private transient UserNameValidator valUserName;
+    private transient PasswordValidator valPassword;
     private AccessTokenInfoPanel pnlAccessTokenInfo;
     private OsmPrivilegesPanel pnlOsmPrivileges;
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java	(revision 8308)
@@ -42,7 +42,7 @@
 
     private JosmTextField tfAccessTokenKey;
-    private AccessTokenKeyValidator valAccessTokenKey;
+    private transient AccessTokenKeyValidator valAccessTokenKey;
     private JosmTextField tfAccessTokenSecret;
-    private AccessTokenSecretValidator valAccessTokenSecret;
+    private transient AccessTokenSecretValidator valAccessTokenSecret;
     private JCheckBox cbSaveToPreferences;
     private HtmlPanel pnlMessage;
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java	(revision 8308)
@@ -333,5 +333,5 @@
 
     class AcceptAccessTokenAction extends AbstractAction implements PropertyChangeListener {
-        private OAuthToken token;
+        private transient OAuthToken token;
 
         public AcceptAccessTokenAction() {
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java	(revision 8308)
@@ -28,7 +28,7 @@
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
@@ -42,5 +42,5 @@
 public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
     private AccessTokenInfoPanel pnlAccessTokenInfo;
-    private OAuthToken requestToken;
+    private transient OAuthToken requestToken;
 
     private RetrieveRequestTokenPanel pnlRetrieveRequestToken;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 8308)
@@ -92,5 +92,5 @@
 
     public static final class PreferencePanel extends JPanel implements PreferenceTab {
-        private final TabPreferenceSetting preferenceSetting;
+        private final transient TabPreferenceSetting preferenceSetting;
 
         private PreferencePanel(TabPreferenceSetting preferenceSetting) {
@@ -122,5 +122,5 @@
 
     public static final class PreferenceScrollPane extends JScrollPane implements PreferenceTab {
-        private final TabPreferenceSetting preferenceSetting;
+        private final transient TabPreferenceSetting preferenceSetting;
 
         private PreferenceScrollPane(Component view, TabPreferenceSetting preferenceSetting) {
@@ -145,13 +145,13 @@
 
     // all created tabs
-    private final List<PreferenceTab> tabs = new ArrayList<>();
+    private final transient List<PreferenceTab> tabs = new ArrayList<>();
     private static final Collection<PreferenceSettingFactory> settingsFactories = new LinkedList<>();
     private static final PreferenceSettingFactory advancedPreferenceFactory = new AdvancedPreference.Factory();
-    private final List<PreferenceSetting> settings = new ArrayList<>();
+    private final transient List<PreferenceSetting> settings = new ArrayList<>();
 
     // distinct list of tabs that have been initialized (we do not initialize tabs until they are displayed to speed up dialog startup)
-    private final List<PreferenceSetting> settingsInitialized = new ArrayList<>();
-
-    final List<ValidationListener> validationListeners = new ArrayList<>();
+    private final transient List<PreferenceSetting> settingsInitialized = new ArrayList<>();
+
+    final transient List<ValidationListener> validationListeners = new ArrayList<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 8308)
@@ -111,5 +111,5 @@
     protected final AvailableSourcesListModel availableSourcesModel;
     protected final String availableSourcesUrl;
-    protected final List<SourceProvider> sourceProviders;
+    protected final transient List<SourceProvider> sourceProviders;
 
     protected JTable tblIconPaths;
@@ -447,5 +447,5 @@
 
     protected static class AvailableSourcesListModel extends DefaultListModel<ExtendedSourceEntry> {
-        private List<ExtendedSourceEntry> data;
+        private transient List<ExtendedSourceEntry> data;
         private DefaultListSelectionModel selectionModel;
 
@@ -499,5 +499,5 @@
 
     protected class ActiveSourcesModel extends AbstractTableModel {
-        private List<SourceEntry> data;
+        private transient List<SourceEntry> data;
         private DefaultListSelectionModel selectionModel;
 
@@ -1037,5 +1037,5 @@
     class ReloadSourcesAction extends AbstractAction {
         private final String url;
-        private final List<SourceProvider> sourceProviders;
+        private final transient List<SourceProvider> sourceProviders;
         public ReloadSourcesAction(String url, List<SourceProvider> sourceProviders) {
             putValue(NAME, tr("Reload"));
@@ -1055,5 +1055,5 @@
 
     protected static class IconPathTableModel extends AbstractTableModel {
-        private List<String> data;
+        private transient List<String> data;
         private DefaultListSelectionModel selectionModel;
 
@@ -1240,5 +1240,5 @@
     class SourceLoader extends PleaseWaitRunnable {
         private final String url;
-        private final List<SourceProvider> sourceProviders;
+        private final transient List<SourceProvider> sourceProviders;
         private BufferedReader reader;
         private boolean canceled;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 8308)
@@ -313,5 +313,5 @@
     private static class ActionParametersTableModel extends AbstractTableModel {
 
-        private ActionDefinition currentAction = ActionDefinition.getSeparator();
+        private transient ActionDefinition currentAction = ActionDefinition.getSeparator();
 
         @Override
@@ -393,5 +393,5 @@
 
     private class ToolbarPopupMenu extends JPopupMenu  {
-        private ActionDefinition act;
+        private transient ActionDefinition act;
 
         private void setActionAndAdapt(ActionDefinition action) {
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 8308)
@@ -357,27 +357,39 @@
             public void menuSelected(MenuEvent me) {
                 p.removeAll();
-                for (File f: new File(".").listFiles()) {
-                   String s = f.getName();
-                   int idx = s.indexOf('_');
-                   if (idx>=0) {
-                        String t=s.substring(0,idx);
-                        if (profileTypes.containsKey(t)) {
-                            p.add(new ImportProfileAction(s, f, t));
-                        }
-                   }
-                }
-                for (File f: Main.pref.getPreferencesDirectory().listFiles()) {
-                   String s = f.getName();
-                   int idx = s.indexOf('_');
-                   if (idx>=0) {
-                        String t=s.substring(0,idx);
-                        if (profileTypes.containsKey(t)) {
-                            p.add(new ImportProfileAction(s, f, t));
-                        }
-                   }
-                }
-            }
-            @Override public void menuDeselected(MenuEvent me) { }
-            @Override public void menuCanceled(MenuEvent me) { }
+                File[] files = new File(".").listFiles();
+                if (files != null) {
+                    for (File f: files) {
+                       String s = f.getName();
+                       int idx = s.indexOf('_');
+                       if (idx>=0) {
+                            String t=s.substring(0,idx);
+                            if (profileTypes.containsKey(t)) {
+                                p.add(new ImportProfileAction(s, f, t));
+                            }
+                       }
+                    }
+                }
+                files = Main.pref.getPreferencesDirectory().listFiles();
+                if (files != null) {
+                    for (File f: files) {
+                       String s = f.getName();
+                       int idx = s.indexOf('_');
+                       if (idx>=0) {
+                            String t=s.substring(0,idx);
+                            if (profileTypes.containsKey(t)) {
+                                p.add(new ImportProfileAction(s, f, t));
+                            }
+                       }
+                    }
+                }
+            }
+            @Override
+            public void menuDeselected(MenuEvent me) {
+                // Not implemented
+            }
+            @Override
+            public void menuCanceled(MenuEvent me) {
+                // Not implemented
+            }
         });
         return p;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java	(revision 8308)
@@ -28,5 +28,5 @@
     private final String prefPattern;
     private final String schemaKey;
-    private final Preferences prefs;
+    private final transient Preferences prefs;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(revision 8308)
@@ -30,6 +30,6 @@
 public class ListEditor extends ExtendedDialog {
 
-    private List<String> data;
-    private PrefEntry entry;
+    private transient List<String> data;
+    private transient PrefEntry entry;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(revision 8308)
@@ -39,6 +39,6 @@
 
     private EntryListModel entryModel;
-    private List<List<String>> data;
-    private PrefEntry entry;
+    private transient List<List<String>> data;
+    private transient PrefEntry entry;
 
     private JList<String> entryList;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(revision 8308)
@@ -43,5 +43,5 @@
 
     private EntryListModel entryModel;
-    private PrefEntry entry;
+    private transient PrefEntry entry;
 
     private JList<String> entryList;
@@ -49,6 +49,6 @@
     private MapTableModel tableModel;
 
-    private List<List<String>> dataKeys;
-    private List<List<String>> dataValues;
+    private transient List<List<String>> dataKeys;
+    private transient List<List<String>> dataValues;
     private Integer entryIdx;
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java	(revision 8308)
@@ -43,5 +43,5 @@
 public class PreferencesTable extends JTable {
     private AllSettingsTableModel model;
-    private final List<PrefEntry> displayData;
+    private final transient List<PrefEntry> displayData;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java	(revision 8308)
@@ -20,5 +20,5 @@
 public class StringEditor extends ExtendedDialog {
 
-    private PrefEntry entry;
+    private transient PrefEntry entry;
     private JosmTextField tvalue;
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java	(revision 8308)
@@ -48,5 +48,5 @@
     private JRadioButton drawRawGpsLinesLocal = new JRadioButton(tr("Local files"));
     private JRadioButton drawRawGpsLinesNone = new JRadioButton(tr("None"));
-    private ActionListener drawRawGpsLinesActionListener;
+    private transient ActionListener drawRawGpsLinesActionListener;
     private JosmTextField drawRawGpsMaxLineLength = new JosmTextField(8);
     private JosmTextField drawRawGpsMaxLineLengthLocal = new JosmTextField(8);
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java	(revision 8308)
@@ -77,5 +77,5 @@
 
     private static class LanguageComboBoxModel extends DefaultComboBoxModel<Locale> {
-        private final List<Locale> data = new ArrayList<>();
+        private final transient List<Locale> data = new ArrayList<>();
 
         public LanguageComboBoxModel(){
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(revision 8308)
@@ -30,5 +30,5 @@
     protected final JosmTextField name = new JosmTextField();
 
-    protected final Collection<ContentValidationListener> listeners = new ArrayList<>();
+    protected final transient Collection<ContentValidationListener> listeners = new ArrayList<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddTMSLayerPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddTMSLayerPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddTMSLayerPanel.java	(revision 8308)
@@ -23,5 +23,5 @@
     private final JosmTextField tmsZoom = new JosmTextField();
     private final JosmTextArea tmsUrl = new JosmTextArea(3, 40);
-    private final KeyAdapter keyAdapter = new KeyAdapter() {
+    private final transient KeyAdapter keyAdapter = new KeyAdapter() {
         @Override
         public void keyReleased(KeyEvent e) {
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 8308)
@@ -36,7 +36,7 @@
 public class AddWMSLayerPanel extends AddImageryPanel {
 
-    private final WMSImagery wms = new WMSImagery();
+    private final transient WMSImagery wms = new WMSImagery();
     private final JCheckBox endpoint = new JCheckBox(tr("Store WMS endpoint only, select layers at usage"));
-    private final WMSLayerTree tree = new WMSLayerTree();
+    private final transient WMSLayerTree tree = new WMSLayerTree();
     private final JComboBox<String> formats = new JComboBox<>();
     private final JLabel wmsInstruction;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 8308)
@@ -205,5 +205,5 @@
         public final JTable defaultTable;
         /** The selection listener synchronizing map display with table of default providers **/
-        private final DefListSelectionListener defaultTableListener;
+        private final transient DefListSelectionListener defaultTableListener;
         /** The map displaying imagery bounds of selected default providers **/
         public final JMapViewer defaultMap;
@@ -225,5 +225,5 @@
         // Private members
         private final PreferenceTabbedPane gui;
-        private final ImageryLayerInfo layerInfo;
+        private final transient ImageryLayerInfo layerInfo;
 
         /**
@@ -233,5 +233,5 @@
         private static class ImageryURLTableCellRenderer extends DefaultTableCellRenderer {
 
-            private List<ImageryInfo> layers;
+            private transient List<ImageryInfo> layers;
 
             public ImageryURLTableCellRenderer(List<ImageryInfo> layers) {
@@ -792,7 +792,10 @@
 
     static class OffsetBookmarksPanel extends JPanel {
-        private List<OffsetBookmark> bookmarks = OffsetBookmark.allBookmarks;
+        private transient List<OffsetBookmark> bookmarks = OffsetBookmark.allBookmarks;
         private OffsetsBookmarksModel model = new OffsetsBookmarksModel();
 
+        /**
+         * Constructs a new {@code OffsetBookmarksPanel}.
+         */
         public OffsetBookmarksPanel(final PreferenceTabbedPane gui) {
             super(new GridBagLayout());
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 8308)
@@ -38,5 +38,5 @@
  */
 public class PluginListPanel extends VerticallyScrollablePanel {
-    private PluginPreferencesModel model;
+    private transient PluginPreferencesModel model;
 
     /**
@@ -110,5 +110,5 @@
      */
     private class JPluginCheckBox extends JCheckBox {
-        public final PluginInformation pi;
+        public final transient PluginInformation pi;
         public JPluginCheckBox(final PluginInformation pi, boolean selected) {
             this.pi = pi;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java	(revision 8308)
@@ -20,7 +20,7 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.plugins.PluginHandler;
-import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
@@ -55,6 +55,6 @@
     }
 
-    private Map<Policy, JRadioButton> rbVersionBasedUpatePolicy;
-    private Map<Policy, JRadioButton> rbTimeBasedUpatePolicy;
+    private transient Map<Policy, JRadioButton> rbVersionBasedUpatePolicy;
+    private transient Map<Policy, JRadioButton> rbTimeBasedUpatePolicy;
     private JosmTextField tfUpdateInterval;
     private JLabel lblUpdateInterval;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(revision 8308)
@@ -7,4 +7,5 @@
 import java.awt.GridBagLayout;
 import java.awt.event.ActionListener;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -48,9 +49,9 @@
         private ProjectionCodeListModel model;
         public JList<String> selectionList;
-        private List<String> data;
-        private List<String> filteredData;
+        private transient List<String> data;
+        private transient List<String> filteredData;
         private static final String DEFAULT_CODE = "EPSG:3857";
         private String lastCode = DEFAULT_CODE;
-        private ActionListener listener;
+        private transient ActionListener listener;
 
         public CodeSelectionPanel(String initialCode, ActionListener listener) {
@@ -67,5 +68,6 @@
          * Comparator that compares the number part of the code numerically.
          */
-        private static class CodeComparator implements Comparator<String> {
+        private static class CodeComparator implements Comparator<String>, Serializable {
+            private static final long serialVersionUID = 1L;
             private final Pattern codePattern = Pattern.compile("([a-zA-Z]+):(\\d+)");
             @Override
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(revision 8308)
@@ -50,10 +50,10 @@
     private JLabel lblApiUrl;
     private JosmTextField tfOsmServerUrl;
-    private ApiUrlValidator valOsmServerUrl;
+    private transient ApiUrlValidator valOsmServerUrl;
     private SideButton btnTest;
     /** indicates whether to use the default OSM URL or not */
     private JCheckBox cbUseDefaultServerUrl;
 
-    private ApiUrlPropagator propagator;
+    private transient ApiUrlPropagator propagator;
 
     protected JComponent buildDefaultServerUrlPanel() {
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java	(revision 8308)
@@ -100,5 +100,5 @@
     public static final String PROXY_EXCEPTIONS = "proxy.exceptions";
 
-    private Map<ProxyPolicy, JRadioButton> rbProxyPolicy;
+    private transient Map<ProxyPolicy, JRadioButton> rbProxyPolicy;
     private JosmTextField tfProxyHttpHost;
     private JosmTextField tfProxyHttpPort;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java	(revision 8308)
@@ -119,5 +119,5 @@
     private static class ScListModel extends AbstractTableModel {
         private String[] columnNames = new String[]{tr("Action"), tr("Shortcut")};
-        private List<Shortcut> data;
+        private transient List<Shortcut> data;
 
         public ScListModel() {
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java	(revision 8308)
@@ -17,12 +17,11 @@
  *
  */
-@SuppressWarnings("serial")
 public class TagCellEditor extends AbstractCellEditor implements TableCellEditor{
 
     protected AutoCompletingTextField editor = null;
-    protected TagModel currentTag = null;
+    protected transient TagModel currentTag = null;
 
     /** the cache of auto completion items derived from the current JOSM data set */
-    protected AutoCompletionManager autocomplete = null;
+    protected transient AutoCompletionManager autocomplete = null;
 
     /** user input is matched against this list of auto completion items */
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java	(revision 8308)
@@ -36,5 +36,5 @@
 
     /** the list holding the tags */
-    protected final List<TagModel> tags =new ArrayList<>();
+    protected final transient List<TagModel> tags =new ArrayList<>();
 
     /** indicates whether the model is dirty */
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java	(revision 8308)
@@ -39,5 +39,5 @@
 
     private PresetListPanel presetListPanel;
-    private final PresetHandler presetHandler;
+    private final transient PresetHandler presetHandler;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TagTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TagTable.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TagTable.java	(revision 8308)
@@ -65,5 +65,5 @@
      */
     private final CopyOnWriteArrayList<Component> doNotStopCellEditingWhenFocused = new CopyOnWriteArrayList<>();
-    private CellEditorRemover editorRemover;
+    private transient CellEditorRemover editorRemover;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 8308)
@@ -86,8 +86,8 @@
      */
     public EnumSet<TaggingPresetType> types;
-    public List<TaggingPresetItem> data = new LinkedList<>();
-    public Roles roles;
-    public TemplateEntry nameTemplate;
-    public Match nameTemplateFilter;
+    public transient List<TaggingPresetItem> data = new LinkedList<>();
+    public transient Roles roles;
+    public transient TemplateEntry nameTemplate;
+    public transient Match nameTemplateFilter;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 8308)
@@ -76,11 +76,11 @@
     private final EnumSet<TaggingPresetType> typesInSelection = EnumSet.noneOf(TaggingPresetType.class);
     private boolean typesInSelectionDirty = true;
-    private final PresetClassifications classifications = new PresetClassifications();
+    private final transient PresetClassifications classifications = new PresetClassifications();
     private final ResultListModel lsResultModel = new ResultListModel();
 
-    private final List<ListSelectionListener> listSelectionListeners = new ArrayList<>();
-
-    private ActionListener dblClickListener;
-    private ActionListener clickListener;
+    private final transient List<ListSelectionListener> listSelectionListeners = new ArrayList<>();
+
+    private transient ActionListener dblClickListener;
+    private transient ActionListener clickListener;
 
     private static class ResultListCellRenderer implements ListCellRenderer<TaggingPreset> {
@@ -97,5 +97,5 @@
     private static class ResultListModel extends AbstractListModel<TaggingPreset> {
 
-        private List<PresetClassification> presets = new ArrayList<>();
+        private transient List<PresetClassification> presets = new ArrayList<>();
 
         public synchronized void setPresets(List<PresetClassification> presets) {
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java	(revision 8308)
@@ -242,5 +242,5 @@
     /* ------------------------------------------------------------------------------------ */
 
-    private CellEditorSupport tableCellEditorSupport;
+    private transient CellEditorSupport tableCellEditorSupport;
     private String originalValue;
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java	(revision 8308)
@@ -33,11 +33,11 @@
 
     /** the bare list of AutoCompletionItems */
-    private List<AutoCompletionListItem> list = null;
+    private transient List<AutoCompletionListItem> list = null;
     /**  the filtered list of AutoCompletionItems */
-    private ArrayList<AutoCompletionListItem> filtered = null;
+    private transient ArrayList<AutoCompletionListItem> filtered = null;
     /** the filter expression */
     private String filter = null;
     /** map from value to priority */
-    private Map<String,AutoCompletionListItem> valutToItemMap;
+    private transient Map<String,AutoCompletionListItem> valutToItemMap;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java	(revision 8308)
@@ -15,5 +15,5 @@
 public abstract class AbstractIdTextField<T extends AbstractTextComponentValidator> extends JosmTextField {
 
-    protected final T validator;
+    protected final transient T validator;
 
     /**
@@ -56,9 +56,9 @@
      */
     public final void clearTextIfInvalid() {
-        if (!validator.isValid()) 
+        if (!validator.isValid())
             setText("");
         validator.validate();
     }
-    
+
     /**
      * Reads the id(s).
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/ComboBoxHistory.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/ComboBoxHistory.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/ComboBoxHistory.java	(revision 8308)
@@ -14,5 +14,5 @@
     private int maxSize = 10;
 
-    private List<HistoryChangedListener> listeners = new ArrayList<>();
+    private transient List<HistoryChangedListener> listeners = new ArrayList<>();
 
     public ComboBoxHistory(int size) {
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java	(revision 8308)
@@ -35,5 +35,5 @@
     private boolean watchSlider = true;
 
-    private List<ChangeListener> listeners = new ArrayList<>();
+    private transient List<ChangeListener> listeners = new ArrayList<>();
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java	(revision 8308)
@@ -96,6 +96,6 @@
     }
 
-    private final List<Pair<Action,Shortcut>> unregisteredActionShortcuts = new ArrayList<>();
-    private final Set<JosmAction> disabledMenuActions = new HashSet<>();
+    private final transient List<Pair<Action,Shortcut>> unregisteredActionShortcuts = new ArrayList<>();
+    private final transient Set<JosmAction> disabledMenuActions = new HashSet<>();
 
     @Override
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 8308)
@@ -708,5 +708,5 @@
      */
     public static class InvalidLayoutException extends RuntimeException {
-        private final Node node;
+        private final transient Node node;
         public InvalidLayoutException (String msg, Node node) {
             super(msg);
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 8308)
@@ -47,7 +47,7 @@
  */
 public class MultiSplitPane extends JPanel {
-    private AccessibleContext accessibleContext = null;
+    private transient AccessibleContext accessibleContext = null;
     private boolean continuousLayout = true;
-    private DividerPainter dividerPainter = new DefaultDividerPainter();
+    private transient DividerPainter dividerPainter = new DefaultDividerPainter();
 
     /**
@@ -222,5 +222,5 @@
 
     private boolean dragUnderway = false;
-    private MultiSplitLayout.Divider dragDivider = null;
+    private transient MultiSplitLayout.Divider dragDivider = null;
     private Rectangle initialDividerBounds = null;
     private boolean oldFloatingDividers = true;
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 8308)
@@ -17,9 +17,9 @@
 
 public abstract class OsmPrimitivesTable extends JTable {
-    
+
     /**
      * the data layer in whose context primitives are edited in this table
      */
-    private OsmDataLayer layer;
+    private transient OsmDataLayer layer;
 
     /** the popup menu */
@@ -40,5 +40,5 @@
         addMouseListener(new DblClickHandler());
     }
-    
+
     public OsmPrimitivesTableModel getOsmPrimitivesTableModel() {
         return (OsmPrimitivesTableModel) getModel();
@@ -56,5 +56,5 @@
         return popupMenu;
     }
-    
+
     protected abstract ZoomToAction buildZoomToAction();
 
@@ -67,9 +67,9 @@
         return menu;
     }
-    
+
     public void unlinkAsListener() {
         MapView.removeLayerChangeListener(zoomToAction);
     }
-        
+
     public OsmPrimitive getPrimitiveInLayer(int row, OsmDataLayer layer) {
         return getOsmPrimitivesTableModel().getReferredPrimitive(row);
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java	(revision 8308)
@@ -43,5 +43,5 @@
     }
 
-    private final QuadStateDecorator model;
+    private final transient QuadStateDecorator model;
     private State[] allowed;
 
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java	(revision 8308)
@@ -51,5 +51,5 @@
     protected final UndoManager undo = new UndoManager();
 
-    protected final UndoableEditListener undoEditListener = new UndoableEditListener() {
+    protected final transient UndoableEditListener undoEditListener = new UndoableEditListener() {
         @Override
         public void undoableEditHappened(UndoableEditEvent e) {
@@ -60,5 +60,5 @@
     };
 
-    protected final PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
+    protected final transient PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
         @Override
         public void propertyChange(PropertyChangeEvent evt) {
Index: /trunk/src/org/openstreetmap/josm/io/AbstractParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/AbstractParser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/AbstractParser.java	(revision 8308)
@@ -25,5 +25,5 @@
  */
 public abstract class AbstractParser extends DefaultHandler {
-    
+
     /** the current primitive to be read */
     protected HistoryOsmPrimitive currentPrimitive;
@@ -34,6 +34,8 @@
         this.locator = locator;
     }
-    
+
     protected abstract void throwException(String message) throws SAXException;
+
+    protected abstract void throwException(String message, Exception e) throws SAXException;
 
     protected final long getMandatoryAttributeLong(Attributes attr, String name) throws SAXException {
@@ -46,5 +48,5 @@
             l = Long.parseLong(v);
         } catch(NumberFormatException e) {
-            throwException(tr("Illegal value for mandatory attribute ''{0}'' of type long. Got ''{1}''.", name, v));
+            throwException(tr("Illegal value for mandatory attribute ''{0}'' of type long. Got ''{1}''.", name, v), e);
         }
         if (l < 0) {
@@ -62,5 +64,5 @@
             l = Long.parseLong(v);
         } catch(NumberFormatException e) {
-            throwException(tr("Illegal value for mandatory attribute ''{0}'' of type long. Got ''{1}''.", name, v));
+            throwException(tr("Illegal value for mandatory attribute ''{0}'' of type long. Got ''{1}''.", name, v), e);
         }
         if (l < 0) {
@@ -79,5 +81,5 @@
             d = Double.parseDouble(v);
         } catch(NumberFormatException e) {
-            throwException(tr("Illegal value for attribute ''{0}'' of type double. Got ''{1}''.", name, v));
+            throwException(tr("Illegal value for attribute ''{0}'' of type double. Got ''{1}''.", name, v), e);
         }
         return d;
@@ -102,5 +104,5 @@
         return false; // not reached
     }
-    
+
     protected final HistoryOsmPrimitive createPrimitive(Attributes atts, OsmPrimitiveType type) throws SAXException {
         long id = getMandatoryAttributeLong(atts,"id");
@@ -152,5 +154,5 @@
         currentPrimitive = createPrimitive(atts, OsmPrimitiveType.WAY);
     }
-    
+
     protected final void startRelation(Attributes atts) throws SAXException {
         currentPrimitive = createPrimitive(atts, OsmPrimitiveType.RELATION);
@@ -175,5 +177,5 @@
             type = OsmPrimitiveType.fromApiTypeName(v);
         } catch(IllegalArgumentException e) {
-            throwException(tr("Illegal value for mandatory attribute ''{0}'' of type OsmPrimitiveType. Got ''{1}''.", "type", v));
+            throwException(tr("Illegal value for mandatory attribute ''{0}'' of type OsmPrimitiveType. Got ''{1}''.", "type", v), e);
         }
         String role = getMandatoryAttributeString(atts, "role");
@@ -181,5 +183,5 @@
         ((HistoryRelation)currentPrimitive).addMember(member);
     }
-    
+
     protected final boolean doStartElement(String qName, Attributes atts) throws SAXException {
         switch (qName) {
Index: /trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java	(revision 8308)
@@ -192,5 +192,5 @@
          * The downloaded notes
          */
-        public final List<Note> notes;
+        public final transient List<Note> notes;
         /**
          * The download limit sent to the server.
Index: /trunk/src/org/openstreetmap/josm/io/CacheFiles.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/CacheFiles.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/CacheFiles.java	(revision 8308)
@@ -248,10 +248,13 @@
         long dirsize = 0;
 
-        for(File f : dir.listFiles()) {
-            if(isExpired(f)) {
-                f.delete();
-            } else {
-                dirsize += f.length();
-                modtime.put(f.lastModified(), f);
+        File[] files = dir.listFiles();
+        if (files != null) {
+            for(File f : files) {
+                if(isExpired(f)) {
+                    f.delete();
+                } else {
+                    dirsize += f.length();
+                    modtime.put(f.lastModified(), f);
+                }
             }
         }
@@ -283,15 +286,23 @@
      */
     public void customCleanUp(int type, int size) {
+        File[] files;
         switch(type) {
         case CLEAN_ALL:
-            for(File f : dir.listFiles()) {
-                f.delete();
+            files = dir.listFiles();
+            if (files != null) {
+                for (File f : files) {
+                    f.delete();
+                }
             }
             break;
         case CLEAN_SMALL_FILES:
-            for(File f: dir.listFiles())
-                if(f.length() < size) {
-                    f.delete();
+            files = dir.listFiles();
+            if (files != null) {
+                for (File f: files) {
+                    if (f.length() < size) {
+                        f.delete();
+                    }
                 }
+            }
             break;
         case CLEAN_BY_DATE:
@@ -309,6 +320,9 @@
         long dirsize = 0;
 
-        for(File f : this.dir.listFiles()) {
-            dirsize += f.length();
+        File[] files = dir.listFiles();
+        if (files != null) {
+            for(File f : files) {
+                dirsize += f.length();
+            }
         }
         return dirsize;
Index: /trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java	(revision 8308)
@@ -44,6 +44,7 @@
         }
 
-        protected void throwException(Exception e) throws XmlParsingException {
-            throw new XmlParsingException(e).rememberLocation(locator);
+        @Override
+        protected void throwException(String message, Exception e) throws XmlParsingException {
+            throw new XmlParsingException(message, e).rememberLocation(locator);
         }
 
@@ -103,10 +104,10 @@
         @Override
         public void error(SAXParseException e) throws SAXException {
-            throwException(e);
+            throwException(null, e);
         }
 
         @Override
         public void fatalError(SAXParseException e) throws SAXException {
-            throwException(e);
+            throwException(null, e);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 8308)
@@ -49,4 +49,9 @@
 
         @Override
+        protected void throwException(String message, Exception e) throws SAXException {
+            throw new SAXException(getCurrentPosition() + message, e);
+        }
+
+        @Override
         public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
             doStartElement(qName, atts);
Index: /trunk/src/org/openstreetmap/josm/io/imagery/WMSException.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/imagery/WMSException.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/imagery/WMSException.java	(revision 8308)
@@ -17,5 +17,5 @@
 public class WMSException extends Exception {
 
-    private final WMSRequest request;
+    private final transient WMSRequest request;
     private final URL url;
     private final String[] exceptions;
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 8308)
@@ -46,5 +46,5 @@
 
     private final JTable propertyTable;
-    private final Collection<? extends OsmPrimitive> sel;
+    private final transient Collection<? extends OsmPrimitive> sel;
     private final int[] count;
 
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 8308)
@@ -2,8 +2,8 @@
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
+import static org.openstreetmap.josm.tools.I18n.tr;
+
 import java.util.Collection;
 import java.util.HashSet;
-import static org.openstreetmap.josm.tools.I18n.tr;
-
 import java.util.LinkedList;
 import java.util.List;
@@ -80,10 +80,10 @@
                             }
                         });
+                        Collection<OsmPrimitive> downlPrim = new HashSet<>();
+                        for (PrimitiveId id : downloaded) {
+                            downlPrim.add(ds.getPrimitiveById(id));
+                        }
+                        AddTagsDialog.addTags(args, sender, downlPrim);
                     }
-                    Collection<OsmPrimitive> downlPrim = new HashSet<>();
-                    for (PrimitiveId id : downloaded) {
-                        downlPrim.add(ds.getPrimitiveById(id));
-                    }
-                    AddTagsDialog.addTags(args, sender, downlPrim);
                     ps.clear();
                 }
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginException.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginException.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginException.java	(revision 8308)
@@ -12,5 +12,5 @@
  */
 public class PluginException extends Exception {
-    public final PluginProxy plugin;
+    public final transient PluginProxy plugin;
     public final String name;
 
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 8308)
@@ -1088,4 +1088,6 @@
                 return name.endsWith(".jar.new");
             }});
+        if (files == null)
+            return;
 
         for (File updatedPlugin : files) {
Index: /trunk/src/org/openstreetmap/josm/tools/AlphanumComparator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/AlphanumComparator.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/tools/AlphanumComparator.java	(revision 8308)
@@ -23,4 +23,5 @@
  *
  */
+import java.io.Serializable;
 import java.text.Collator;
 import java.util.Comparator;
@@ -38,5 +39,7 @@
  *
  */
-public class AlphanumComparator implements Comparator<String> {
+public class AlphanumComparator implements Comparator<String>, Serializable {
+
+    private static final long serialVersionUID = 1L;
 
     private static final AlphanumComparator INSTANCE = new AlphanumComparator();
Index: /trunk/src/org/openstreetmap/josm/tools/FontsManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/FontsManager.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/tools/FontsManager.java	(revision 8308)
@@ -39,9 +39,5 @@
             String url = "resource://data/fonts/"+fontFile;
             try (InputStream i = new CachedFile(url).getInputStream()) {
-                Font f = Font.createFont(Font.TRUETYPE_FONT, i);
-                if (f == null) {
-                    throw new RuntimeException("unable to load font: "+fontFile);
-                }
-                ge.registerFont(f);
+                ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, i));
             } catch (IOException | FontFormatException ex) {
                 throw new RuntimeException(ex);
Index: /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 8308)
@@ -67,6 +67,6 @@
     private class MyAction extends AbstractAction {
 
-        private final MultikeyShortcutAction action;
-        private final Shortcut shortcut;
+        private final transient MultikeyShortcutAction action;
+        private final transient Shortcut shortcut;
 
         MyAction(MultikeyShortcutAction action) {
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 8308)
@@ -318,5 +318,8 @@
         try (DirectoryStream<Path> ds = Files.newDirectoryStream(fontPath)) {
             for (Path p : ds) {
-                fontsAvail.add(p.getFileName().toString().toUpperCase());
+                Path filename = p.getFileName();
+                if (filename != null) {
+                    fontsAvail.add(filename.toString().toUpperCase());
+                }
             }
             fontsAvail.add(""); // for devanagari
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 8308)
@@ -378,10 +378,13 @@
             Main.warn("Unable to create directory "+out.getPath());
         }
-        for (File f : in.listFiles()) {
-            File target = new File(out, f.getName());
-            if (f.isDirectory()) {
-                copyDirectory(f, target);
-            } else {
-                copyFile(f, target);
+        File[] files = in.listFiles();
+        if (files != null) {
+            for (File f : files) {
+                File target = new File(out, f.getName());
+                if (f.isDirectory()) {
+                    copyDirectory(f, target);
+                } else {
+                    copyFile(f, target);
+                }
             }
         }
@@ -415,9 +418,11 @@
         if( path.exists() ) {
             File[] files = path.listFiles();
-            for (File file : files) {
-                if (file.isDirectory()) {
-                    deleteDirectory(file);
-                } else if (!file.delete()) {
-                    Main.warn("Unable to delete file: "+file.getPath());
+            if (files != null) {
+                for (File file : files) {
+                    if (file.isDirectory()) {
+                        deleteDirectory(file);
+                    } else if (!file.delete()) {
+                        Main.warn("Unable to delete file: "+file.getPath());
+                    }
                 }
             }
Index: /trunk/src/org/openstreetmap/josm/tools/template_engine/ParseError.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/template_engine/ParseError.java	(revision 8307)
+++ /trunk/src/org/openstreetmap/josm/tools/template_engine/ParseError.java	(revision 8308)
@@ -9,5 +9,5 @@
 public class ParseError extends Exception {
 
-    private final Token unexpectedToken;
+    private final transient Token unexpectedToken;
 
     public ParseError(Token unexpectedToken) {
