Index: applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/OSMRecPluginHelper.java
===================================================================
--- applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/OSMRecPluginHelper.java	(revision 33579)
+++ applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/OSMRecPluginHelper.java	(revision 33800)
@@ -99,11 +99,10 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
-import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionListItem;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
-//import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.WindowGeometry;
@@ -172,7 +171,7 @@
     private String changedKey;
 
-    Comparator<AutoCompletionListItem> defaultACItemComparator = new Comparator<AutoCompletionListItem>() {
+    Comparator<AutoCompletionItem> defaultACItemComparator = new Comparator<AutoCompletionItem>() {
         @Override
-        public int compare(AutoCompletionListItem o1, AutoCompletionListItem o2) {
+        public int compare(AutoCompletionItem o1, AutoCompletionItem o2) {
             return String.CASE_INSENSITIVE_ORDER.compare(o1.getValue(), o2.getValue());
         }
@@ -195,5 +194,5 @@
     OSMRecPluginHelper(DefaultTableModel propertyData, Map<String, Map<String, Integer>> valueCount) {
         this.tagData = propertyData;
-        fileHistory = Main.pref.getCollection("file-open.history");
+        fileHistory = Main.pref.getList("file-open.history");
         if (!fileHistory.isEmpty()) {
             MAIN_PATH = (String) fileHistory.toArray()[0];
@@ -282,5 +281,5 @@
         if (PROPERTY_REMEMBER_TAGS.get() && recentTags.isEmpty()) {
             recentTags.clear();
-            Collection<String> c = Main.pref.getCollection("properties.recent-tags");
+            Collection<String> c = Main.pref.getList("properties.recent-tags");
             Iterator<String> it = c.iterator();
             String key, value;
@@ -303,5 +302,5 @@
                 c.add(t.getValue());
             }
-            Main.pref.putCollection("properties.recent-tags", c);
+            Main.pref.putList("properties.recent-tags", c);
         }
     }
@@ -424,5 +423,5 @@
             daysField.setColumns(FIELD_COLUMNS);
 
-            Collection<String> fileHistory = Main.pref.getCollection("file-open.history");
+            Collection<String> fileHistory = Main.pref.getList("file-open.history");
             if (!fileHistory.isEmpty()) {
                 inputFileField.setText(MAIN_PATH);
@@ -623,6 +622,6 @@
             mainPanel.add(trainingProgressBar, BorderLayout.SOUTH);
 
-            AutoCompletionManager autocomplete = MainApplication.getLayerManager().getEditLayer().data.getAutoCompletionManager();
-            List<AutoCompletionListItem> keyList = autocomplete.getKeys();
+            AutoCompletionManager autocomplete = AutoCompletionManager.of(MainApplication.getLayerManager().getEditLayer().data);
+            List<AutoCompletionItem> keyList = new ArrayList<>(autocomplete.getTagKeys());
             Collections.sort(keyList, defaultACItemComparator);
 
@@ -964,5 +963,5 @@
          * @return The created adapter
          */
-        protected FocusAdapter addFocusAdapter(final AutoCompletionManager autocomplete, final Comparator<AutoCompletionListItem> comparator) {
+        protected FocusAdapter addFocusAdapter(final AutoCompletionManager autocomplete, final Comparator<AutoCompletionItem> comparator) {
             // get the combo box' editor component
             JTextComponent editor = (JTextComponent) values.getEditor().getEditorComponent();
@@ -973,8 +972,8 @@
                     String key = keys.getEditor().getItem().toString();
 
-                    List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
+                    List<AutoCompletionItem> valueList = new ArrayList<>(autocomplete.getTagValues(getAutocompletionKeys(key)));
                     Collections.sort(valueList, comparator);
 
-                    values.setPossibleACItems(valueList);
+                    values.setPossibleAcItems(valueList);
                     values.getEditor().selectAll();
                 }
@@ -1548,12 +1547,12 @@
             +"<br><br>"+tr("Please select a key")), GBC.eol().fill(GBC.HORIZONTAL));
 
-            AutoCompletionManager autocomplete = MainApplication.getLayerManager().getEditLayer().data.getAutoCompletionManager();
-            List<AutoCompletionListItem> keyList = autocomplete.getKeys();
-
-            AutoCompletionListItem itemToSelect = null;
+            AutoCompletionManager autocomplete = AutoCompletionManager.of(MainApplication.getLayerManager().getEditLayer().data);
+            List<AutoCompletionItem> keyList = new ArrayList<>(autocomplete.getTagKeys());
+
+            AutoCompletionItem itemToSelect = null;
             // remove the object's tag keys from the list
-            Iterator<AutoCompletionListItem> iter = keyList.iterator();
+            Iterator<AutoCompletionItem> iter = keyList.iterator();
             while (iter.hasNext()) {
-                AutoCompletionListItem item = iter.next();
+                AutoCompletionItem item = iter.next();
                 if (item.getValue().equals(lastAddKey)) {
                     itemToSelect = item;
@@ -1571,5 +1570,5 @@
 
             Collections.sort(keyList, defaultACItemComparator);
-            keys.setPossibleACItems(keyList);
+            keys.setPossibleAcItems(keyList);
             keys.setEditable(true);
 
@@ -2363,5 +2362,5 @@
 
             try {
-                input = new Scanner(textualListFile);
+                input = new Scanner(textualListFile, "UTF-8");
             } catch (FileNotFoundException ex) {
                 Logging.warn(ex);
Index: applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/parsers/Mapper.java
===================================================================
--- applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/parsers/Mapper.java	(revision 33579)
+++ applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/parsers/Mapper.java	(revision 33800)
@@ -34,5 +34,5 @@
     public void parseFile(InputStream inps) throws FileNotFoundException {
 
-        Scanner input = new Scanner(inps); //the Map file contains lines of the mappings separated with the symbol "|"
+        Scanner input = new Scanner(inps, "UTF-8"); //the Map file contains lines of the mappings separated with the symbol "|"
         //e.g. highway motorway | Motorway
         //the key will be the string "highway motorway" and the value "Motorway"
Index: applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/parsers/TextualStatistics.java
===================================================================
--- applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/parsers/TextualStatistics.java	(revision 33579)
+++ applications/editors/josm/plugins/OSMRecPlugin/src/org/openstreetmap/josm/plugins/osmrec/parsers/TextualStatistics.java	(revision 33800)
@@ -23,5 +23,5 @@
         textualList = new ArrayList<>();
 
-        Scanner input = new Scanner(textualFileStream);
+        Scanner input = new Scanner(textualFileStream, "UTF-8");
         while (input.hasNext()) {
             String nextLine = input.nextLine();
