Index: /applications/editors/josm/plugins/lakewalker/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- /applications/editors/josm/plugins/lakewalker/.settings/org.eclipse.jdt.core.prefs	(revision 34933)
+++ /applications/editors/josm/plugins/lakewalker/.settings/org.eclipse.jdt.core.prefs	(revision 34934)
@@ -9,4 +9,5 @@
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
@@ -32,4 +33,9 @@
 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
 org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
 org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
 org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
@@ -38,4 +44,12 @@
 org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
 org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
Index: /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Configurer.java
===================================================================
--- /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Configurer.java	(revision 34933)
+++ /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Configurer.java	(revision 34934)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.plugins.lakewalker;
 
+import java.awt.Component;
 import java.beans.PropertyChangeListener;
 
@@ -12,8 +13,6 @@
  * */
 public abstract class Configurer {
-// FIXME: maybe parameterize this so that value can have the right type
-// in subclasses?
+  // FIXME: maybe parameterize this so that value can have the right type in subclasses?
   public static final String NAME_PROPERTY = "Configurer.name";
-  //    public static final String VALUE_PROPERTY = "value";
 
   /** A String the uniquely identifies this property */
@@ -44,4 +43,5 @@
   /**
    * Unique identifier
+   * @return Unique identifier
    */
   public String getKey() {
@@ -51,4 +51,5 @@
   /**
    * Plain English description of the Object
+   * @return Plain English description of the Object
    */
   public String getName() {
@@ -67,4 +68,5 @@
    * The Object value
    * May be null if the Object has not been initialized
+   * @return The Object value
    */
   public Object getValue() {
@@ -79,4 +81,5 @@
   /**
    * Set the Object value
+   * @param o the Object value
    */
   public void setValue(Object o) {
@@ -90,4 +93,5 @@
   /**
    * If true, then don't fire PropertyChangeEvents when the value is reset
+   * @param val true to disable firing PropertyChangeEvents when the value is reset
    */
   public void setFrozen(boolean val) {
@@ -108,4 +112,5 @@
   /**
    * Set the Object value from a String
+   * @param s Object value as String
    */
   public abstract void setValue(String s);
@@ -113,11 +118,13 @@
   /**
    * GUI interface for setting the option in an editing window
+   * @return GUI interface for setting the option in an editing window
    */
-  public abstract java.awt.Component getControls();
+  public abstract Component getControls();
 
   /**
    * Add a listener to be notified when the Object state changes
+   * @param l listener to add
    */
-  public void addPropertyChangeListener(java.beans.PropertyChangeListener l) {
+  public void addPropertyChangeListener(PropertyChangeListener l) {
     changeSupport.addPropertyChangeListener(l);
   }
Index: /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Lakewalker.java
===================================================================
--- /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Lakewalker.java	(revision 34933)
+++ /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Lakewalker.java	(revision 34934)
@@ -35,12 +35,17 @@
 
     /**
-     *  east = 0
-     *  northeast = 1
-     *  north = 2
-     *  northwest = 3
-     *  west = 4
-     *  southwest = 5
-     *  south = 6
-     *  southeast = 7
+     * Map direction to index.
+     * @param direction human direction: {@code (north|south)?(east|west)?}
+     * @return direction index as follows:
+     * <ul>
+     * <li>east = 0</li>
+     * <li>northeast = 1</li>
+     * <li>north = 2</li>
+     * <li>northwest = 3</li>
+     * <li>west = 4</li>
+     * <li>southwest = 5</li>
+     * <li>south = 6</li>
+     * <li>southeast = 7</li>
+     * </ul>
      */
     private int getDirectionIndex(String direction) throws ArrayIndexOutOfBoundsException {
@@ -70,6 +75,16 @@
     /**
      * Do a trace
-     */
-    public ArrayList<double[]> trace(double lat, double lon, double tl_lon, double br_lon, double tl_lat, double br_lat,
+     *
+     * @param lat latitude
+     * @param lon longitude
+     * @param tl_lon top/left longitude
+     * @param br_lon bottom/right longitude
+     * @param tl_lat top/left latitude
+     * @param br_lat bottom/right latitude
+     * @param progressMonitor Progress monitor
+     * @return list of node coordinates
+     * @throws LakewalkerException if anything goes wrong
+     */
+    public List<double[]> trace(double lat, double lon, double tl_lon, double br_lon, double tl_lat, double br_lat,
             ProgressMonitor progressMonitor) throws LakewalkerException {
 
@@ -83,5 +98,5 @@
             Boolean detect_loop = false;
 
-            ArrayList<double[]> nodelist = new ArrayList<>();
+            List<double[]> nodelist = new ArrayList<>();
 
             int[] xy = geo_to_xy(lat, lon, this.resolution);
@@ -201,6 +216,8 @@
     /**
      * Remove duplicate nodes from the list
-     */
-    public ArrayList<double[]> duplicateNodeRemove(ArrayList<double[]> nodes) {
+     * @param nodes list of node coordinates
+     * @return filtered list without duplicate nodes
+     */
+    public List<double[]> duplicateNodeRemove(List<double[]> nodes) {
 
         if (nodes.size() <= 1) {
@@ -228,6 +245,9 @@
     /**
      * Reduce the number of vertices based on their proximity to each other
-     */
-    public ArrayList<double[]> vertexReduce(ArrayList<double[]> nodes, double proximity) {
+     * @param nodes list of node coordinates
+     * @param proximity proximity
+     * @return reduced list
+     */
+    public List<double[]> vertexReduce(List<double[]> nodes, double proximity) {
 
         // Check if node list is empty
@@ -237,5 +257,5 @@
 
         double[] test_v = nodes.get(0);
-        ArrayList<double[]> reducednodes = new ArrayList<>();
+        List<double[]> reducednodes = new ArrayList<>();
 
         double prox_sq = Math.pow(proximity, 2);
@@ -267,6 +287,6 @@
     }
 
-        /*
-    public ArrayList<double[]> douglasPeuckerNR(ArrayList<double[]> nodes, double epsilon) {
+    /*
+    public List<double[]> douglasPeuckerNR(List<double[]> nodes, double epsilon) {
         command_stack = [(0, len(nodes) - 1)]
 
@@ -332,5 +352,5 @@
         */
 
-    public ArrayList<double[]> douglasPeucker(ArrayList<double[]> nodes, double epsilon, int depth) {
+    public List<double[]> douglasPeucker(List<double[]> nodes, double epsilon, int depth) {
 
         // Check if node list is empty
@@ -344,5 +364,5 @@
         double[] last = nodes.get(nodes.size()-1);
 
-        ArrayList<double[]> new_nodes = new ArrayList<>();
+        List<double[]> new_nodes = new ArrayList<>();
 
         double d = 0;
@@ -372,6 +392,6 @@
     }
 
-    private ArrayList<double[]> sublist(ArrayList<double[]> l, int i, int f) throws ArrayIndexOutOfBoundsException {
-        ArrayList<double[]> sub = new ArrayList<>();
+    private List<double[]> sublist(List<double[]> l, int i, int f) throws ArrayIndexOutOfBoundsException {
+        List<double[]> sub = new ArrayList<>();
 
         if (f < i || i < 0 || f < 0 || f > l.size()) {
Index: /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerAction.java
===================================================================
--- /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerAction.java	(revision 34933)
+++ /applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerAction.java	(revision 34934)
@@ -16,4 +16,5 @@
 import java.util.Comparator;
 import java.util.LinkedList;
+import java.util.List;
 
 import javax.swing.JOptionPane;
@@ -164,5 +165,5 @@
         progressMonitor.beginTask(null, 3);
         try {
-            ArrayList<double[]> nodelist = new ArrayList<>();
+            List<double[]> nodelist = new ArrayList<>();
 
             try {
@@ -173,9 +174,5 @@
             }
 
-            System.out.println(nodelist.size()+" nodes generated");
-
-            /**
-            * Run the nodelist through a vertex reduction algorithm
-            */
+            // Run the nodelist through a vertex reduction algorithm
 
             progressMonitor.subTask(tr("Running vertex reduction..."));
@@ -183,9 +180,5 @@
             nodelist = lw.vertexReduce(nodelist, epsilon);
 
-            //System.out.println("After vertex reduction "+nodelist.size()+" nodes remain.");
-
-            /**
-            * And then through douglas-peucker approximation
-            */
+            // And then through douglas-peucker approximation
 
             progressMonitor.worked(1);
@@ -194,9 +187,5 @@
             nodelist = lw.douglasPeucker(nodelist, epsilon, 0);
 
-            //System.out.println("After Douglas-Peucker approximation "+nodelist.size()+" nodes remain.");
-
-            /**
-            * And then through a duplicate node remover
-            */
+            // And then through a duplicate node remover
 
             progressMonitor.worked(1);
@@ -205,15 +194,10 @@
             nodelist = lw.duplicateNodeRemove(nodelist);
 
-            //System.out.println("After removing duplicate nodes, "+nodelist.size()+" nodes remain.");
-
-
             // if for some reason (image loading failed, ...) nodelist is empty, no more processing required.
-            if (nodelist.size() == 0) {
+            if (nodelist.isEmpty()) {
                 return;
             }
 
-            /**
-            * Turn the arraylist into osm nodes
-            */
+            // Turn the arraylist into osm nodes
 
             Way way = new Way();
