Index: trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 18972)
@@ -103,4 +103,7 @@
     }
 
+    /**
+     * A record class to store how a multipolygon is constructed
+     */
     public static class Multipolygon {
         private final Way outerWay;
@@ -161,5 +164,5 @@
     /**
      * HelperClass - saves a way and the "inside" side.
-     *
+     * <p>
      * insideToTheLeft: if true left side is "in", false -right side is "in".
      * Left and right are determined along the orientation of way.
@@ -235,8 +238,17 @@
     }
 
+    /**
+     * A multipolygon with a list of inner ways and an assembled polygon for the outer way
+     */
     public static class AssembledMultipolygon {
+        /** The outer way of the multipolygon */
         public AssembledPolygon outerWay;
+        /** The inner polygons of the multipolygon */
         public List<AssembledPolygon> innerWays;
 
+        /**
+         * Create a new {@link AssembledMultipolygon}
+         * @param way The outer way
+         */
         public AssembledMultipolygon(AssembledPolygon way) {
             outerWay = way;
@@ -402,5 +414,5 @@
 
         /**
-         * Search for an other way coming to the same head node at left side from last way. #9951
+         * Search for another way coming to the same head node at left side from last way. #9951
          * @return left way or null if none found
          */
@@ -652,6 +664,5 @@
 
         //first remove nodes in the same coordinate
-        boolean removedDuplicates = false;
-        removedDuplicates |= removeDuplicateNodes(allStartingWays);
+        boolean removedDuplicates = removeDuplicateNodes(allStartingWays);
 
         if (removedDuplicates) {
@@ -1135,5 +1146,5 @@
         if (chunks.size() > 1) {
             SplitWayCommand split = SplitWayCommand.splitWay(way, chunks,
-                    Collections.<OsmPrimitive>emptyList(), SplitWayCommand.Strategy.keepFirstChunk());
+                    Collections.emptyList(), SplitWayCommand.Strategy.keepFirstChunk());
 
             if (split != null) {
Index: trunk/src/org/openstreetmap/josm/data/osm/Filter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Filter.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/data/osm/Filter.java	(revision 18972)
@@ -93,8 +93,13 @@
     }
 
+    /**
+     * The class for storing and retrieving a filter from a preference entry
+     */
     public static class FilterPreferenceEntry {
+        /** See {@link Filter#version} */
         @WriteExplicitly
         @StructEntry public String version = "1";
 
+        /** See {@link Filter#text} */
         @StructEntry public String text;
 
@@ -111,8 +116,11 @@
         @StructEntry public String mode = "add";
 
+        /** See {@link Filter#caseSensitive} */
         @StructEntry public boolean case_sensitive;
 
+        /** See {@link Filter#regexSearch} */
         @StructEntry public boolean regex_search;
 
+        /** See {@link Filter#mapCSSSearch} */
         @StructEntry public boolean mapCSS_search;
 
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java	(revision 18972)
@@ -356,4 +356,7 @@
     }
 
+    /**
+     * Clear the merged list.
+     */
     public void clearMerged() {
         getMergedEntries().clear();
@@ -582,5 +585,5 @@
      * This an adapter between a {@link JTable} and one of the three entry lists
      * in the role {@link ListRole} managed by the {@link AbstractListMergeModel}.
-     *
+     * <p>
      * From the point of view of the {@link JTable} it is a {@link TableModel}.
      *
@@ -593,5 +596,5 @@
 
         /**
-         *
+         * Create a new {@link EntriesTableModel}
          * @param role the role
          */
@@ -731,5 +734,5 @@
      * This is the selection model to be used in a {@link JTable} which displays
      * an entry list managed by {@link AbstractListMergeModel}.
-     *
+     * <p>
      * The model ensures that only rows displaying an entry in the entry list
      * can be selected. "Empty" rows can't be selected.
@@ -832,4 +835,7 @@
     }
 
+    /**
+     * A model for {@link ComparePairType} with the enums added as options.
+     */
     public class ComparePairListModel extends JosmComboBoxModel<ComparePairType> {
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java	(revision 18972)
@@ -33,4 +33,7 @@
     public Direction direction;
 
+    /**
+     * The direction of the way connection
+     */
     public enum Direction {
         FORWARD, BACKWARD, ROUNDABOUT_LEFT, ROUNDABOUT_RIGHT, NONE;
Index: trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 18972)
@@ -59,4 +59,6 @@
 import org.xml.sax.SAXException;
 
+import jakarta.annotation.Nullable;
+
 /**
  * Class to process configuration changes stored in XML
@@ -176,4 +178,10 @@
     }
 
+    /**
+     * Ask the user for text
+     * @param text The message for the user
+     * @return The text the user entered
+     */
+    @Nullable
     public static String askForText(String text) {
         String s = JOptionPane.showInputDialog(MainApplication.getMainFrame(), text, tr("Enter text"), JOptionPane.QUESTION_MESSAGE);
@@ -261,4 +269,9 @@
     }
 
+    /**
+     * Delete a file
+     * @param path The path to delete inside the base directory
+     * @param base The base directory for the path
+     */
     public static void deleteFile(String path, String base) {
         String dir = getDirectoryByAbbr(base);
@@ -277,4 +290,8 @@
     }
 
+    /**
+     * Delete a file or a directory
+     * @param f The file or directory to delete
+     */
     public static void deleteFileOrDirectory(File f) {
         if (f.isDirectory()) {
@@ -293,4 +310,10 @@
     private static boolean busy;
 
+    /**
+     * Perform install, uninstall, and deletion operations on plugins
+     * @param install The {@code ;} delimited list of plugins to install
+     * @param uninstall The {@code ;} delimited list of plugins to uninstall
+     * @param delete The {@code ;} delimited list of plugins to delete
+     */
     public static void pluginOperation(String install, String uninstall, String delete) {
         final List<String> installList = new ArrayList<>();
@@ -376,4 +399,7 @@
     }
 
+    /**
+     * Read preferences from xml files
+     */
     public static class XMLCommandProcessor {
 
@@ -384,4 +410,8 @@
         private boolean lastV; // last If condition result
 
+        /**
+         * Read preferences from an XML file
+         * @param file The file to read custom preferences from
+         */
         public void openAndReadXML(File file) {
             PreferencesUtils.log("-- Reading custom preferences from " + file.getAbsolutePath() + " --");
@@ -397,4 +427,8 @@
         }
 
+        /**
+         * Read custom preferences from an XML {@link InputStream}
+         * @param is The {@link InputStream} to read from
+         */
         public void openAndReadXML(InputStream is) {
             try {
@@ -409,4 +443,8 @@
         }
 
+        /**
+         * Create a new {@link XMLCommandProcessor}
+         * @param mainPrefs The preferences to modify with custom preferences
+         */
         public XMLCommandProcessor(Preferences mainPrefs) {
             this.mainPrefs = mainPrefs;
@@ -548,18 +586,23 @@
             String locText = evalVars(elem.getAttribute(LanguageInfo.getJOSMLocaleCode()+".text"));
             if (!locText.isEmpty()) text = locText;
-            String var = elem.getAttribute("var");
-            if (var.isEmpty()) var = "result";
+            String varAttribute = elem.getAttribute("var");
+            if (varAttribute.isEmpty()) varAttribute = "result";
 
             String input = evalVars(elem.getAttribute("input"));
             if ("true".equals(input)) {
-                setVar(var, askForText(text));
+                setVar(varAttribute, askForText(text));
             } else {
                 String opts = evalVars(elem.getAttribute("options"));
                 String locOpts = evalVars(elem.getAttribute(LanguageInfo.getJOSMLocaleCode()+".options"));
                 if (!locOpts.isEmpty()) opts = locOpts;
-                setVar(var, String.valueOf(askForOption(text, opts)));
-            }
-        }
-
+                setVar(varAttribute, String.valueOf(askForOption(text, opts)));
+            }
+        }
+
+        /**
+         * Set a variable in the environment
+         * @param name The name of the environment variable
+         * @param value The value for the environment variable
+         */
         public void setVar(String name, String value) {
             environment.put(name, value);
@@ -604,5 +647,5 @@
          */
         private String evalVars(String s) {
-            Matcher mr = Pattern.compile("\\$\\{(?<identifier>[^\\}]*)\\}").matcher(s);
+            Matcher mr = Pattern.compile("\\$\\{(?<identifier>[^}]*)}").matcher(s);
             StringBuffer sb = new StringBuffer();
             while (mr.find()) {
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java	(revision 18972)
@@ -22,4 +22,7 @@
     public static final String MODE_PROP = SaveLayerInfo.class.getName() + ".mode";
 
+    /**
+     * The status of the editor
+     */
     public enum Mode {
         EDITING_DATA,
Index: trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 18972)
@@ -6,4 +6,5 @@
 
 import java.awt.Component;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -48,5 +49,5 @@
 /**
  * Abstract base class for background imagery layers ({@link WMSLayer}, {@link TMSLayer}, {@link WMTSLayer}).
- *
+ * <p>
  * Handles some common tasks, like image filters, image processors, etc.
  */
@@ -138,5 +139,5 @@
                 panel.add(new JLabel(entry.get(0) + ':'), GBC.std());
                 panel.add(GBC.glue(5, 0), GBC.std());
-                panel.add(createTextField(entry.get(1)), GBC.eol().fill(GBC.HORIZONTAL));
+                panel.add(createTextField(entry.get(1)), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
             }
         }
@@ -193,4 +194,7 @@
     }
 
+    /**
+     * Create an offset for an imagery layer
+     */
     public class OffsetAction extends AbstractAction implements LayerAction {
         @Override
@@ -223,7 +227,7 @@
     /**
      * Create the submenu or the menu item to set the offset of the layer.
-     *
+     * <p>
      * If only one menu item for this layer exists, it is returned by this method.
-     *
+     * <p>
      * If there are multiple, this method appends them to the subMenu and then returns the reference to the subMenu.
      * @param subMenu The subMenu to use
Index: trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 18972)
@@ -124,6 +124,13 @@
     }
 
+    /**
+     * Go to the next marker in a layer
+     */
     public static final class JumpToNextMarker extends JumpToMarker {
 
+        /**
+         * Create a new {@link JumpToNextMarker} action
+         * @param layer The layer to use when jumping to the next marker
+         */
         public JumpToNextMarker(JumpToMarkerLayer layer) {
             super(layer, Shortcut.registerShortcut("core_multikey:nextMarker", tr("Multikey: {0}", tr("Next marker")),
@@ -140,6 +147,13 @@
     }
 
+    /**
+     * Go to the previous marker in a layer
+     */
     public static final class JumpToPreviousMarker extends JumpToMarker {
 
+        /**
+         * Create a new {@link JumpToPreviousMarker} action
+         * @param layer The layer to use when jumping to the previous marker
+         */
         public JumpToPreviousMarker(JumpToMarkerLayer layer) {
             super(layer, Shortcut.registerShortcut("core_multikey:previousMarker", tr("Multikey: {0}", tr("Previous marker")),
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 18972)
@@ -620,7 +620,14 @@
     }
 
+    /**
+     * Toggle visibility of the marker text and icons
+     */
     public static final class ShowHideMarkerText extends AbstractAction implements LayerAction {
         private final transient MarkerLayer layer;
 
+        /**
+         * Create a new {@link ShowHideMarkerText} action
+         * @param layer The layer to toggle the visible state of the marker text and icons
+         */
         public ShowHideMarkerText(MarkerLayer layer) {
             super(tr("Show Text/Icons"));
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java	(revision 18972)
@@ -15,8 +15,8 @@
 /**
  * Setting to customize a MapPaint style.
- *
+ * <p>
  * Can be changed by the user in the right click menu of the mappaint style
  * dialog.
- *
+ * <p>
  * Defined in the MapCSS style, e.g.
  * <pre>
@@ -119,4 +119,8 @@
     }
 
+    /**
+     * A setting for a style
+     * @param <T> The property type
+     */
     class PropertyStyleSetting<T> extends LabeledStyleSetting implements StyleSetting {
         private final Class<T> type;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 18972)
@@ -40,11 +40,47 @@
     @interface NullableArguments {}
 
+    /**
+     * Represents a function that accepts three arguments and produces a result. This is a specialization of {@link Function}.
+     * This is a functional interface whose functional method is {@link #apply(Object, Object, Object)}.
+     * @param <T> The type of the first argument
+     * @param <U> The type of the second argument
+     * @param <V> The type of the third argument
+     * @param <R> The type of the result of the function
+     * @see Function
+     * @see BiFunction
+     */
     @FunctionalInterface
     public interface TriFunction<T, U, V, R> {
+        /**
+         * Call the function
+         * @param t The first argument
+         * @param u The second argument
+         * @param v The third argument
+         * @return The result of the function call
+         */
         R apply(T t, U u, V v);
     }
 
+    /**
+     * Represents a function that accepts four arguments and produces a result. This is a specialization of {@link Function}.
+     * This is a functional interface whose functional method is {@link #apply(Object, Object, Object, Object)}.
+     * @param <T> The type of the first argument
+     * @param <U> The type of the second argument
+     * @param <V> The type of the third argument
+     * @param <W> The type of the fourth argument
+     * @param <R> The type of the result of the function
+     * @see Function
+     * @see BiFunction
+     */
     @FunctionalInterface
     public interface QuadFunction<T, U, V, W, R> {
+        /**
+         * Call the function
+         * @param t The first argument
+         * @param u The second argument
+         * @param v The third argument
+         * @param w The fourth argument
+         * @return The result of the function call
+         */
         R apply(T t, U u, V v, W w);
     }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 18972)
@@ -8,4 +8,5 @@
 import java.awt.Dimension;
 import java.awt.GraphicsEnvironment;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.GridLayout;
@@ -240,4 +241,7 @@
     }
 
+    /**
+     * Parse actions from a name
+     */
     public static class ActionParser {
         private final Map<String, Action> actions;
@@ -920,9 +924,9 @@
             final JPanel left = new JPanel(new GridBagLayout());
             left.add(new JLabel(tr("Toolbar")), GBC.eol());
-            left.add(new JScrollPane(selectedList), GBC.std().fill(GBC.BOTH));
+            left.add(new JScrollPane(selectedList), GBC.std().fill(GridBagConstraints.BOTH));
 
             final JPanel right = new JPanel(new GridBagLayout());
             right.add(new JLabel(tr("Available")), GBC.eol());
-            right.add(new JScrollPane(actionsTree), GBC.eol().fill(GBC.BOTH));
+            right.add(new JScrollPane(actionsTree), GBC.eol().fill(GridBagConstraints.BOTH));
 
             final JPanel buttons = new JPanel(new GridLayout(6, 1));
@@ -978,11 +982,11 @@
             actionParametersTable.getColumnModel().getColumn(0).setHeaderValue(tr("Parameter name"));
             actionParametersTable.getColumnModel().getColumn(1).setHeaderValue(tr("Parameter value"));
-            actionParametersPanel.add(actionParametersTable.getTableHeader(), GBC.eol().fill(GBC.HORIZONTAL));
-            actionParametersPanel.add(actionParametersTable, GBC.eol().fill(GBC.BOTH).insets(0, 0, 0, 10));
+            actionParametersPanel.add(actionParametersTable.getTableHeader(), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+            actionParametersPanel.add(actionParametersTable, GBC.eol().fill(GridBagConstraints.BOTH).insets(0, 0, 0, 10));
             actionParametersPanel.setVisible(false);
 
             JPanel panel = gui.createPreferenceTab(this);
-            panel.add(p, GBC.eol().fill(GBC.BOTH));
-            panel.add(actionParametersPanel, GBC.eol().fill(GBC.HORIZONTAL));
+            panel.add(p, GBC.eol().fill(GridBagConstraints.BOTH));
+            panel.add(actionParametersPanel, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
             selected.removeAllElements();
             for (ActionDefinition actionDefinition: getDefinedActions()) {
Index: trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 18972)
@@ -5,4 +5,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.io.IOException;
@@ -182,13 +183,19 @@
 
         sources = new TaggingPresetSourceEditor();
-        panel.add(sources, GBC.eol().fill(GBC.BOTH));
+        panel.add(sources, GBC.eol().fill(GridBagConstraints.BOTH));
         PreferencePanel preferencePanel = gui.createPreferenceTab(this);
-        preferencePanel.add(panel, GBC.eol().fill(GBC.BOTH));
+        preferencePanel.add(panel, GBC.eol().fill(GridBagConstraints.BOTH));
         sources.deferLoading(gui, preferencePanel);
         gui.addValidationListener(validationListener);
     }
 
+    /**
+     * An editor for what preset source locations are used
+     */
     public static class TaggingPresetSourceEditor extends SourceEditor {
 
+        /**
+         * Create a new {@link TaggingPresetSourceEditor} with the default providers
+         */
         public TaggingPresetSourceEditor() {
             super(SourceType.TAGGING_PRESET, Config.getUrls().getJOSMWebsite()+"/presets", presetSourceProviders, true);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java	(revision 18972)
@@ -5,4 +5,5 @@
 
 import java.awt.BorderLayout;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
@@ -120,17 +121,20 @@
             this.setLayout(new GridBagLayout());
             JPanel p2 = new JPanel(new GridBagLayout());
-            p2.add(cbInput, GBC.std().fill(GBC.HORIZONTAL).insets(0, 20, 5, 5));
+            p2.add(cbInput, GBC.std().fill(GridBagConstraints.HORIZONTAL).insets(0, 20, 5, 5));
             p2.add(btnCheck, GBC.eol().insets(0, 20, 0, 5));
-            this.add(p2, GBC.eol().fill(GBC.HORIZONTAL));
+            this.add(p2, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
             p2 = new JPanel(new GridBagLayout());
-            p2.add(valStatus, GBC.std().anchor(GBC.WEST).weight(0.0001, 0));
-            p2.add(errorsPanel, GBC.eol().fill(GBC.HORIZONTAL));
-            this.add(p2, GBC.eol().fill(GBC.HORIZONTAL));
+            p2.add(valStatus, GBC.std().anchor(GridBagConstraints.WEST).weight(0.0001, 0));
+            p2.add(errorsPanel, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+            this.add(p2, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
             p2 = new JPanel(new GridBagLayout());
             p2.add(btnInfo, GBC.std().insets(0, 20, 0, 0));
-            p2.add(GBC.glue(1, 0), GBC.eol().fill(GBC.HORIZONTAL));
-            this.add(p2, GBC.eol().fill(GBC.HORIZONTAL));
-        }
-
+            p2.add(GBC.glue(1, 0), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+            this.add(p2, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+        }
+
+        /**
+         * Remember the current input
+         */
         public void rememberHistory() {
             cbInput.addCurrentItemToHistory();
@@ -139,4 +143,7 @@
     }
 
+    /**
+     * A dialog for the available parameters of the custom projection
+     */
     public static class ParameterInfoDialog extends ExtendedDialog {
 
@@ -212,7 +219,7 @@
         }
         PreferencePanel prefPanel = (PreferencePanel) panel;
-        String pref = prefPanel.cbInput.getEditorComponent().getText();
+        String savePreferences = prefPanel.cbInput.getEditorComponent().getText();
         prefPanel.rememberHistory();
-        return Collections.singleton(pref);
+        return Collections.singleton(savePreferences);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/util/MultikeyShortcutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/MultikeyShortcutAction.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/gui/util/MultikeyShortcutAction.java	(revision 18972)
@@ -14,4 +14,7 @@
 public interface MultikeyShortcutAction extends Action {
 
+    /**
+     * Information for a Multikey action
+     */
     class MultikeyInfo {
         private final int index;
@@ -43,4 +46,9 @@
     Shortcut getMultikeyShortcut();
 
+    /**
+     * Execute a multi key action
+     * @param index The index to execute
+     * @param repeatLastAction {@code true} if the last action should be executed if no action is found for the given index.
+     */
     void executeMultikeyAction(int index, boolean repeatLastAction);
 
Index: trunk/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java	(revision 18970)
+++ trunk/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java	(revision 18972)
@@ -8,5 +8,5 @@
 /**
  * This class converts a template string (stream of characters) into a stream of tokens.
- *
+ * <p>
  * The result of the tokenization (also called lexical analysis) serves as input for the
  * parser {@link TemplateParser}.
@@ -14,4 +14,7 @@
 public class Tokenizer {
 
+    /**
+     * A token for the parser
+     */
     public static class Token {
         private final TokenType type;
@@ -19,8 +22,19 @@
         private final String text;
 
+        /**
+         * A token
+         * @param type The token type
+         * @param position The position of the token
+         */
         public Token(TokenType type, int position) {
             this(type, position, null);
         }
 
+        /**
+         * A token
+         * @param type The token type
+         * @param position The position of the token
+         * @param text The text for the token
+         */
         public Token(TokenType type, int position, String text) {
             this.type = type;
@@ -47,4 +61,7 @@
     }
 
+    /**
+     * The token type
+     */
     public enum TokenType { CONDITION_START, VARIABLE_START, CONTEXT_SWITCH_START, END, PIPE, APOSTROPHE, TEXT, EOF }
 
@@ -75,4 +92,9 @@
     }
 
+    /**
+     * Get the next token
+     * @return The next token
+     * @throws ParseError if there is an error getting the next token
+     */
     public Token nextToken() throws ParseError {
         if (currentToken != null) {
@@ -128,4 +150,9 @@
     }
 
+    /**
+     * Look at the next token
+     * @return The next token
+     * @throws ParseError if there is an error getting the next token
+     */
     public Token lookAhead() throws ParseError {
         if (currentToken == null) {
@@ -135,4 +162,9 @@
     }
 
+    /**
+     * Skip until we hit a character
+     * @param lastChar The last character to skip
+     * @return A token with the skipped characters
+     */
     public Token skip(char lastChar) {
         currentToken = null;
