Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java	(revision 8415)
@@ -22,12 +22,6 @@
 
     private static final String PATTERN_SESSION =  "https?://.*/.*\\.jo(s|z)";
-    
+
     private Loader loader;
-    
-    /**
-     * Constructs a new {@code DownloadSessionTask}.
-     */
-    public DownloadSessionTask() {
-    }
 
     @Override
@@ -75,5 +69,5 @@
     /**
      * Do not allow to load a session file via remotecontrol.
-     * 
+     *
      * Session importers can be added by plugins and there is currently
      * no way to ensure that these are safe for remotecontol.
Index: trunk/src/org/openstreetmap/josm/data/imagery/Shape.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/Shape.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/imagery/Shape.java	(revision 8415)
@@ -21,5 +21,5 @@
 public class Shape {
 
-    private List<Coordinate> coords = new ArrayList<>();
+    private final List<Coordinate> coords = new ArrayList<>();
 
     public Shape(String asString, String separator) {
@@ -33,5 +33,9 @@
     }
 
+    /**
+     * Constructs a new empty {@code Shape}.
+     */
     public Shape() {
+        // shape contents can be set later with addPoint()
     }
 
@@ -107,5 +111,3 @@
         return true;
     }
-
-
 }
Index: trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java	(revision 8415)
@@ -113,4 +113,5 @@
      */
     public OAuthParameters() {
+        // contents can be set later with setters
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/NodeData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/NodeData.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/osm/NodeData.java	(revision 8415)
@@ -19,5 +19,5 @@
      */
     public NodeData() {
-
+        // contents can be set later with setters
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/RelationData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationData.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationData.java	(revision 8415)
@@ -11,8 +11,15 @@
     private List<RelationMemberData> members = new ArrayList<>();
 
+    /**
+     * Constructs a new {@code RelationData}.
+     */
     public RelationData() {
-
+        // contents can be set later with setters
     }
 
+    /**
+     * Constructs a new {@code RelationData}.
+     * @param data relation data to copy
+     */
     public RelationData(RelationData data) {
         super(data);
Index: trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java	(revision 8415)
@@ -27,8 +27,12 @@
  * A TagCollection can be created:
  * <ul>
- *  <li>from the tags managed by a specific {@link org.openstreetmap.josm.data.osm.OsmPrimitive} with {@link #from(org.openstreetmap.josm.data.osm.Tagged)}</li>
- *  <li>from the union of all tags managed by a collection of {@link org.openstreetmap.josm.data.osm.OsmPrimitive}s with {@link #unionOfAllPrimitives(java.util.Collection)}</li>
- *  <li>from the union of all tags managed by a {@link org.openstreetmap.josm.data.osm.DataSet} with {@link #unionOfAllPrimitives(org.openstreetmap.josm.data.osm.DataSet)}</li>
- *  <li>from the intersection of all tags managed by a collection of primitives with {@link #commonToAllPrimitives(java.util.Collection)}</li>
+ *  <li>from the tags managed by a specific {@link org.openstreetmap.josm.data.osm.OsmPrimitive}
+ *  with {@link #from(org.openstreetmap.josm.data.osm.Tagged)}</li>
+ *  <li>from the union of all tags managed by a collection of {@link org.openstreetmap.josm.data.osm.OsmPrimitive}s
+ *  with {@link #unionOfAllPrimitives(java.util.Collection)}</li>
+ *  <li>from the union of all tags managed by a {@link org.openstreetmap.josm.data.osm.DataSet}
+ *  with {@link #unionOfAllPrimitives(org.openstreetmap.josm.data.osm.DataSet)}</li>
+ *  <li>from the intersection of all tags managed by a collection of primitives
+ *  with {@link #commonToAllPrimitives(java.util.Collection)}</li>
  * </ul>
  *
@@ -36,8 +40,8 @@
  *
  * Basic set operations allow to create the union, the intersection and  the difference
- * of tag collections, see {@link #union(org.openstreetmap.josm.data.osm.TagCollection)}, {@link #intersect(org.openstreetmap.josm.data.osm.TagCollection)},
- * and {@link #minus(org.openstreetmap.josm.data.osm.TagCollection)}.
+ * of tag collections, see {@link #union(org.openstreetmap.josm.data.osm.TagCollection)},
+ * {@link #intersect(org.openstreetmap.josm.data.osm.TagCollection)}, and {@link #minus(org.openstreetmap.josm.data.osm.TagCollection)}.
  *
- *
+ * @since 2008
  */
 public class TagCollection implements Iterable<Tag> {
@@ -145,7 +149,8 @@
 
     /**
-     * Creates an empty tag collection
+     * Creates an empty tag collection.
      */
     public TagCollection() {
+        // contents can be set later with add()
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/WayData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/WayData.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/osm/WayData.java	(revision 8415)
@@ -11,8 +11,15 @@
     private List<Long> nodes = new ArrayList<>();
 
+    /**
+     * Constructs a new {@code NodeData}.
+     */
     public WayData() {
-
+        // contents can be set later with setters
     }
 
+    /**
+     * Constructs a new {@code WayData}.
+     * @param data way data to copy
+     */
     public WayData(WayData data) {
         super(data);
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java	(revision 8415)
@@ -35,5 +35,5 @@
  *
  * </pre>
- *
+ * @since 4087
  */
 public final class MapRendererFactory {
@@ -45,6 +45,4 @@
 
     public static class MapRendererFactoryException extends RuntimeException {
-        public MapRendererFactoryException() {
-        }
 
         public MapRendererFactoryException(String message, Throwable cause) {
Index: trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 8415)
@@ -120,4 +120,5 @@
      */
     public CustomProjection() {
+        // contents can be set later with update()
     }
 
Index: trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShift.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShift.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShift.java	(revision 8415)
@@ -55,6 +55,11 @@
      */
     public NTV2GridShift() {
-    }
-
+        // contents can be set later with setters
+    }
+
+    /**
+     * Constructs a new {@code NTV2GridShift} from a {@code LatLon}.
+     * @param p lat/lon
+     */
     public NTV2GridShift(LatLon p) {
         setLatDegrees(p.lat());
Index: trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java	(revision 8415)
@@ -83,10 +83,4 @@
     private NTV2SubGrid lastSubGrid;
 
-    /**
-     * Constructs a new {@code NTV2GridShiftFile}.
-     */
-    public NTV2GridShiftFile() {
-    }
-
     private void readBytes(InputStream in, byte[] b) throws IOException {
         if (in.read(b) < b.length) {
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 8415)
@@ -163,5 +163,5 @@
             final String s;
             if (obj instanceof Expression) {
-                s = (String) ((Expression) obj).evaluate(new Environment().withPrimitive(p));
+                s = (String) ((Expression) obj).evaluate(new Environment(p));
             } else if (obj instanceof String) {
                 s = (String) obj;
@@ -371,5 +371,5 @@
 
         Selector whichSelectorMatchesPrimitive(OsmPrimitive primitive) {
-            return whichSelectorMatchesEnvironment(new Environment().withPrimitive(primitive));
+            return whichSelectorMatchesEnvironment(new Environment(primitive));
         }
 
@@ -475,5 +475,5 @@
                 return String.valueOf(
                         val instanceof Expression
-                                ? ((Expression) val).evaluate(new Environment().withPrimitive(p))
+                                ? ((Expression) val).evaluate(new Environment(p))
                                 : val
                 );
@@ -522,5 +522,5 @@
          */
         TestError getErrorForPrimitive(OsmPrimitive p) {
-            final Environment env = new Environment().withPrimitive(p);
+            final Environment env = new Environment(p);
             return getErrorForPrimitive(p, whichSelectorMatchesEnvironment(env), env);
         }
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 8415)
@@ -77,8 +77,11 @@
  */
 public class MainApplication extends Main {
+
     /**
-     * Allow subclassing (see JOSM.java)
+     * Constructs a new {@code MainApplication}.
      */
-    public MainApplication() {}
+    public MainApplication() {
+       // Allow subclassing (see JOSM.java)
+    }
 
     /**
@@ -200,6 +203,5 @@
         OFFLINE(true),
         /** --skip-plugins */
-        SKIP_PLUGINS(false),
-        ;
+        SKIP_PLUGINS(false);
 
         private final String name;
@@ -225,15 +227,4 @@
         public boolean requiresArgument() {
             return requiresArg;
-        }
-
-        public static Map<Option, Collection<String>> fromStringMap(Map<String, Collection<String>> opts) {
-            Map<Option, Collection<String>> res = new EnumMap<>(Option.class);
-            for (Map.Entry<String, Collection<String>> e : opts.entrySet()) {
-                Option o = Option.valueOf(e.getKey().toUpperCase(Locale.ENGLISH).replace("-", "_"));
-                if (o != null) {
-                    res.put(o, e.getValue());
-                }
-            }
-            return res;
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RunnableAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RunnableAction.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RunnableAction.java	(revision 8415)
@@ -8,7 +8,4 @@
 public abstract class RunnableAction extends AbstractAction implements Runnable {
 
-    public RunnableAction() {
-    }
-
     @Override
     public abstract void run();
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 8415)
@@ -179,6 +179,5 @@
 
         public OsmPrimitiveList() {
-            super(new OsmPrimitiveListModel());
-            init();
+            this(new OsmPrimitiveListModel());
         }
 
@@ -195,7 +194,4 @@
     static class OsmPrimitiveListModel extends AbstractListModel<OsmPrimitive> {
         private transient List<OsmPrimitive> data;
-
-        public OsmPrimitiveListModel() {
-        }
 
         protected void sort() {
@@ -216,8 +212,4 @@
         }
 
-        public OsmPrimitiveListModel(List<OsmPrimitive> data) {
-            setPrimitives(data);
-        }
-
         public void setPrimitives(List<OsmPrimitive> data) {
             this.data = data;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/Environment.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/Environment.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/Environment.java	(revision 8415)
@@ -47,5 +47,15 @@
      * Creates a new uninitialized environment.
      */
-    public Environment() {}
+    public Environment() {
+        // environment can be initialized later through with* methods
+    }
+
+    /**
+     * Creates a new environment.
+     * @since 8415
+     */
+    public Environment(OsmPrimitive osm) {
+        this.osm = osm;
+    }
 
     /**
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 8415)
@@ -256,5 +256,5 @@
             @Override
             public void visit(Way w) {
-                if (e.child == null && left.matches(new Environment().withPrimitive(w))) {
+                if (e.child == null && left.matches(new Environment(w))) {
                     if (e.osm instanceof Way && Geometry.PolygonIntersection.CROSSING.equals(Geometry.polygonIntersection(w.getNodes(), ((Way) e.osm).getNodes()))) {
                         e.child = w;
@@ -272,5 +272,5 @@
             @Override
             public void visit(Node n) {
-                if (e.child == null && left.matches(new Environment().withPrimitive(n))) {
+                if (e.child == null && left.matches(new Environment(n))) {
                     if (e.osm instanceof Way && Geometry.nodeInsidePolygon(n, ((Way) e.osm).getNodes())
                             || e.osm instanceof Relation && ((Relation) e.osm).isMultipolygon() && Geometry.isNodeInsideMultiPolygon(n, (Relation) e.osm, null)) {
@@ -282,5 +282,5 @@
             @Override
             public void visit(Way w) {
-                if (e.child == null && left.matches(new Environment().withPrimitive(w))) {
+                if (e.child == null && left.matches(new Environment(w))) {
                     if (e.osm instanceof Way && Geometry.PolygonIntersection.FIRST_INSIDE_SECOND.equals(Geometry.polygonIntersection(w.getNodes(), ((Way) e.osm).getNodes()))
                             || e.osm instanceof Relation && ((Relation) e.osm).isMultipolygon() && Geometry.isPolygonInsideMultiPolygon(w.getNodes(), (Relation) e.osm, null)) {
@@ -317,5 +317,5 @@
                     final Relation multipolygon = multipolygons.iterator().next();
                     if (multipolygon == null) throw new NoSuchElementException();
-                    containsFinder = new ContainsFinder(new Environment().withPrimitive(multipolygon)) {
+                    containsFinder = new ContainsFinder(new Environment(multipolygon)) {
                         @Override
                         public boolean isPrimitiveUsable(OsmPrimitive p) {
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/xml/Prototype.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/xml/Prototype.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/xml/Prototype.java	(revision 8415)
@@ -20,5 +20,9 @@
     }
 
+    /**
+     * Constructs a new {@code Prototype}.
+     */
     public Prototype() {
+        // Allows subclassing
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java	(revision 8415)
@@ -519,5 +519,5 @@
             sessionId.userName = osmUserName;
             if (canceled)
-                throw new OsmTransferCanceledException();
+                throw new OsmTransferCanceledException("Authorization canceled");
             monitor.worked(1);
 
@@ -525,5 +525,5 @@
             authenticateOsmSession(sessionId, osmUserName, osmPassword);
             if (canceled)
-                throw new OsmTransferCanceledException();
+                throw new OsmTransferCanceledException("Authorization canceled");
             monitor.worked(1);
 
@@ -531,5 +531,5 @@
             sendAuthorisationRequest(sessionId, requestToken, privileges);
             if (canceled)
-                throw new OsmTransferCanceledException();
+                throw new OsmTransferCanceledException("Authorization canceled");
             monitor.worked(1);
 
@@ -537,5 +537,5 @@
             logoutOsmSession(sessionId);
             if (canceled)
-                throw new OsmTransferCanceledException();
+                throw new OsmTransferCanceledException("Authorization canceled");
             monitor.worked(1);
         } catch(OsmOAuthAuthorizationException e) {
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 8415)
@@ -141,5 +141,5 @@
 
         /**
-         * Construxts a new {@code PresetListEntry}, uninitialized.
+         * Constructs a new {@code PresetListEntry}, uninitialized.
          */
         public PresetListEntry() {
Index: trunk/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java	(revision 8415)
@@ -29,15 +29,14 @@
 
     /**
-     * Constructs a new <code>TextField</code>.  A default model is created,
-     * the initial string is <code>null</code>,
-     * and the number of columns is set to 0.
+     * Constructs a new <code>TextField</code>. A default model is created,
+     * the initial string is <code>null</code>, and the number of columns is set to 0.
      */
     public DisableShortcutsOnFocusGainedTextField() {
+        // Contents can be set with parent methods
     }
 
     /**
      * Constructs a new <code>TextField</code> initialized with the
-     * specified text. A default model is created and the number of
-     * columns is 0.
+     * specified text. A default model is created and the number of columns is 0.
      *
      * @param text the text to be displayed, or <code>null</code>
@@ -48,13 +47,10 @@
 
     /**
-     * Constructs a new empty <code>TextField</code> with the specified
-     * number of columns.
-     * A default model is created and the initial string is set to
-     * <code>null</code>.
+     * Constructs a new empty <code>TextField</code> with the specified number of columns.
+     * A default model is created and the initial string is set to <code>null</code>.
      *
      * @param columns  the number of columns to use to calculate
      *   the preferred width; if columns is set to zero, the
-     *   preferred width will be whatever naturally results from
-     *   the component implementation
+     *   preferred width will be whatever naturally results from the component implementation
      */
     public DisableShortcutsOnFocusGainedTextField(int columns) {
@@ -69,6 +65,5 @@
      * @param columns  the number of columns to use to calculate
      *   the preferred width; if columns is set to zero, the
-     *   preferred width will be whatever naturally results from
-     *   the component implementation
+     *   preferred width will be whatever naturally results from the component implementation
      */
     public DisableShortcutsOnFocusGainedTextField(String text, int columns) {
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmHTMLEditorKit.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmHTMLEditorKit.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmHTMLEditorKit.java	(revision 8415)
@@ -12,19 +12,13 @@
 public class JosmHTMLEditorKit extends HTMLEditorKit {
 
-    /**
-     * Constructs a new {@code JosmHTMLEditorKit}
-     */
-    public JosmHTMLEditorKit() {
-    }
-    
     protected StyleSheet ss = super.getStyleSheet();
 
     /**
      * Set the set of styles to be used to render the various HTML elements.
-     * These styles are specified in terms of CSS specifications. 
+     * These styles are specified in terms of CSS specifications.
      * Each document produced by the kit will have a copy of the sheet which
-     * it can add the document specific styles to. 
-     * 
-     * Unlike the base implementation, the StyleSheet specified is NOT shared 
+     * it can add the document specific styles to.
+     *
+     * Unlike the base implementation, the StyleSheet specified is NOT shared
      * by all HTMLEditorKit instances, to provide a finer granularity.
 
@@ -38,8 +32,8 @@
     /**
      * Get the set of styles currently being used to render the HTML elements.
-     *  
-     * Unlike the base implementation, the StyleSheet specified is NOT shared 
+     *
+     * Unlike the base implementation, the StyleSheet specified is NOT shared
      * by all HTMLEditorKit instances, to provide a finer granularity.
-     * 
+     *
      * @see #setStyleSheet
      */
Index: trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 8415)
@@ -1051,13 +1051,12 @@
 
         /**
-         * Create a Leaf node.  The default value of name is "".
+         * Create a Leaf node. The default value of name is "".
          */
         public Leaf() {
-
-        }
-
-        /**
-         * Create a Leaf node with the specified name.  Name can not
-         * be null.
+            // Name can be set later with setName()
+        }
+
+        /**
+         * Create a Leaf node with the specified name. Name can not be null.
          *
          * @param name value of the Leaf's name property
@@ -1095,6 +1094,5 @@
             sb.append(" \"")
               .append(getName())
-              .append('\"')
-              .append(" weight=")
+              .append("\" weight=")
               .append(getWeight())
               .append(' ')
Index: trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java	(revision 8415)
@@ -74,4 +74,5 @@
      */
     protected TextContextualPopupMenu() {
+        // Restricts visibility
     }
 
Index: trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 8415)
@@ -50,11 +50,4 @@
     /** a collection of changeset ids to query for */
     private Collection<Long> changesetIds = null;
-
-    /**
-     * Constructs a new {@code ChangesetQuery}.
-     */
-    public ChangesetQuery() {
-
-    }
 
     /**
Index: trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 8415)
@@ -562,5 +562,5 @@
             }
             if (cancel)
-                throw new OsmTransferCanceledException();
+                throw new OsmTransferCanceledException("Operation canceled" + (i > 0 ? " in retry #"+i : ""));
             try {
                 Thread.sleep(1000);
Index: trunk/src/org/openstreetmap/josm/io/OsmChangeReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmChangeReader.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/io/OsmChangeReader.java	(revision 8415)
@@ -30,4 +30,5 @@
      */
     protected OsmChangeReader() {
+        // Restricts visibility
     }
 
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 8415)
@@ -78,4 +78,5 @@
      */
     protected OsmReader() {
+        // Restricts visibility
     }
 
Index: trunk/src/org/openstreetmap/josm/io/OsmServerReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 8415)
@@ -143,5 +143,5 @@
             }
             if (cancel)
-                throw new OsmTransferCanceledException();
+                throw new OsmTransferCanceledException("Operation canceled");
             if (Main.pref.getBoolean("osm-server.use-compression", true)) {
                 activeConnection.setRequestProperty("Accept-Encoding", "gzip, deflate");
@@ -171,5 +171,5 @@
 
                 if (activeConnection.getResponseCode() == HttpURLConnection.HTTP_PROXY_AUTH)
-                    throw new OsmTransferCanceledException();
+                    throw new OsmTransferCanceledException("Proxy Authentication Required");
 
                 String encoding = activeConnection.getContentEncoding();
Index: trunk/src/org/openstreetmap/josm/io/OsmTransferCanceledException.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmTransferCanceledException.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/io/OsmTransferCanceledException.java	(revision 8415)
@@ -8,8 +8,10 @@
 
     /**
-     * Constructs a new {@code OsmTransferCanceledException}, without root cause.
+     * Constructs a new {@code OsmTransferCanceledException}, without message.
+     * @param message The detail message (which is saved for later retrieval by the {@link #getMessage} method)
+     * @since 8415
      */
-    public OsmTransferCanceledException() {
-
+    public OsmTransferCanceledException(String message) {
+        super(message);
     }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 8414)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 8415)
@@ -276,14 +276,27 @@
     public static class RequestHandlerException extends Exception {
 
+        /**
+         * Constructs a new {@code RequestHandlerException}.
+         * @param message the detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.
+         */
         public RequestHandlerException(String message) {
             super(message);
         }
+
+        /**
+         * Constructs a new {@code RequestHandlerException}.
+         * @param message the detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.
+         * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
+         */
         public RequestHandlerException(String message, Throwable cause) {
             super(message, cause);
         }
+
+        /**
+         * Constructs a new {@code RequestHandlerException}.
+         * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
+         */
         public RequestHandlerException(Throwable cause) {
             super(cause);
-        }
-        public RequestHandlerException() {
         }
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ChildOrParentSelectorTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ChildOrParentSelectorTest.groovy	(revision 8414)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ChildOrParentSelectorTest.groovy	(revision 8415)
@@ -140,5 +140,5 @@
         r.addMember(new RelationMember("another role", w3))
 
-        Environment e = new Environment().withPrimitive(r)
+        Environment e = new Environment(r)
         assert selector.matches(e)
     }
@@ -165,11 +165,11 @@
         r.addMember(new RelationMember("another role", w3))
 
-        Environment e = new Environment().withPrimitive(w1)
+        Environment e = new Environment(w1)
         assert !selector.matches(e)
 
-        e = new Environment().withPrimitive(w2)
+        e = new Environment(w2)
         assert !selector.matches(e)
 
-        e = new Environment().withPrimitive(w3)
+        e = new Environment(w3)
         assert selector.matches(e)
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyConditionTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyConditionTest.groovy	(revision 8414)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyConditionTest.groovy	(revision 8415)
@@ -77,5 +77,5 @@
         r.addMember(new RelationMember("my_role", n))
 
-        Environment e = new Environment().withPrimitive(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
+        Environment e = new Environment(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
 
         Condition cond = Condition.createKeyCondition("my_role", false, null, Context.LINK)
@@ -92,5 +92,5 @@
         r.addMember(new RelationMember("my_role", n))
 
-        Environment e = new Environment().withPrimitive(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
+        Environment e = new Environment(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
 
         Condition cond = Condition.createKeyCondition("another_role", false, null, Context.LINK)
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy	(revision 8414)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy	(revision 8415)
@@ -63,5 +63,5 @@
         r.addMember(new RelationMember("my_role", n))
 
-        Environment e = new Environment().withPrimitive(n).withParent(r).withLinkContext().withIndex(0, r.membersCount)
+        Environment e = new Environment(n).withParent(r).withLinkContext().withIndex(0, r.membersCount)
 
         Condition cond = new Condition.RoleCondition("my_role", Op.EQ)
@@ -78,5 +78,5 @@
         r.addMember(new RelationMember("my_role", n))
 
-        Environment e = new Environment().withPrimitive(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
+        Environment e = new Environment(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
 
         Condition cond = Condition.createKeyValueCondition("role", "my_role", Op.NEQ, Context.LINK, false)
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 8414)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 8415)
@@ -19,5 +19,5 @@
 
     protected static Environment getEnvironment(String key, String value) {
-        return new Environment().withPrimitive(OsmUtils.createPrimitive("way " + key + "=" + value))
+        return new Environment(OsmUtils.createPrimitive("way " + key + "=" + value))
     }
 
@@ -192,10 +192,10 @@
     public void testNRegexKeyConditionSelector() throws Exception {
         def s1 = getParser("*[sport][tourism != hotel]").selector()
-        assert s1.matches(new Environment().withPrimitive(OsmUtils.createPrimitive("node sport=foobar")))
-        assert !s1.matches(new Environment().withPrimitive(OsmUtils.createPrimitive("node sport=foobar tourism=hotel")))
+        assert s1.matches(new Environment(OsmUtils.createPrimitive("node sport=foobar")))
+        assert !s1.matches(new Environment(OsmUtils.createPrimitive("node sport=foobar tourism=hotel")))
         def s2 = getParser("*[sport][tourism != hotel][leisure !~ /^(sports_centre|stadium|)\$/]").selector()
-        assert s2.matches(new Environment().withPrimitive(OsmUtils.createPrimitive("node sport=foobar")))
-        assert !s2.matches(new Environment().withPrimitive(OsmUtils.createPrimitive("node sport=foobar tourism=hotel")))
-        assert !s2.matches(new Environment().withPrimitive(OsmUtils.createPrimitive("node sport=foobar leisure=stadium")))
+        assert s2.matches(new Environment(OsmUtils.createPrimitive("node sport=foobar")))
+        assert !s2.matches(new Environment(OsmUtils.createPrimitive("node sport=foobar tourism=hotel")))
+        assert !s2.matches(new Environment(OsmUtils.createPrimitive("node sport=foobar leisure=stadium")))
     }
 
@@ -206,15 +206,15 @@
         w1.put("foo", "123")
         w1.put("bar", "456")
-        assert !c1.applies(new Environment().withPrimitive(w1))
+        assert !c1.applies(new Environment(w1))
         w1.put("bar", "123")
-        assert c1.applies(new Environment().withPrimitive(w1))
+        assert c1.applies(new Environment(w1))
         def c2 = (Condition.KeyValueCondition) getParser("[foo =~ */bar/]").condition(Condition.Context.PRIMITIVE)
         def w2 = new Way(w1)
         w2.put("bar", "[0-9]{3}")
-        assert c2.applies(new Environment().withPrimitive(w2))
+        assert c2.applies(new Environment(w2))
         w2.put("bar", "[0-9]")
-        assert c2.applies(new Environment().withPrimitive(w2))
+        assert c2.applies(new Environment(w2))
         w2.put("bar", "^[0-9]\$")
-        assert !c2.applies(new Environment().withPrimitive(w2))
+        assert !c2.applies(new Environment(w2))
     }
 
@@ -301,11 +301,11 @@
         w.addNode(n2)
 
-        def e = new Environment().withPrimitive(n2)
+        def e = new Environment(n2)
         assert s1.matches(e)
         assert e.osm == n2
         assert e.child == n1
         assert e.parent == w
-        assert !s1.matches(new Environment().withPrimitive(n1))
-        assert !s1.matches(new Environment().withPrimitive(w))
+        assert !s1.matches(new Environment(n1))
+        assert !s1.matches(new Environment(w))
     }
 
@@ -332,10 +332,10 @@
         w.addNode(n3)
 
-        assert s1.right.matches(new Environment().withPrimitive(n3))
-        assert s1.left.matches(new Environment().withPrimitive(n2).withChild(n3).withParent(w))
-        assert s1.matches(new Environment().withPrimitive(n3))
-        assert !s1.matches(new Environment().withPrimitive(n1))
-        assert !s1.matches(new Environment().withPrimitive(n2))
-        assert !s1.matches(new Environment().withPrimitive(w))
+        assert s1.right.matches(new Environment(n3))
+        assert s1.left.matches(new Environment(n2).withChild(n3).withParent(w))
+        assert s1.matches(new Environment(n3))
+        assert !s1.matches(new Environment(n1))
+        assert !s1.matches(new Environment(n2))
+        assert !s1.matches(new Environment(w))
     }
 
