Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 4299)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 4300)
@@ -23,4 +23,5 @@
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -249,5 +250,5 @@
         values.setEditable(true);
 
-        List<AutoCompletionListItem> valueList = autocomplete.getValues(key);
+        List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
         Collections.sort(valueList, defaultACItemComparator);
 
@@ -369,4 +370,18 @@
 
     /**
+     * For a given key k, return a list of keys which are used as keys for 
+     * auto-completing values to increase the search space.
+     * @param key the key k
+     * @return a list of keys
+     */
+    static List<String> getAutocompletionKeys(String key) {
+        if ("name".equals(key) || "addr:street".equals(key)) {
+            return Arrays.asList("addr:street", "name");
+        } else {
+            return Arrays.asList(key);
+        }
+    }
+
+    /**
      * This simply fires up an relation editor for the relation shown; everything else
      * is the editor's business.
@@ -478,5 +493,5 @@
                 String key = keys.getEditor().getItem().toString();
 
-                List<AutoCompletionListItem> valueList = autocomplete.getValues(key);
+                List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
                 Collections.sort(valueList, defaultACItemComparator);
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java	(revision 4299)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java	(revision 4300)
@@ -258,5 +258,9 @@
     }
 
-    List<AutoCompletionListItem> getList() {
+    ArrayList<AutoCompletionListItem> getList() {
+        return list;
+    }
+
+    List<AutoCompletionListItem> getUnmodifiableList() {
         return Collections.unmodifiableList(list);
     }
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java	(revision 4299)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java	(revision 4300)
@@ -3,4 +3,5 @@
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -243,6 +244,4 @@
      *
      * @param list the list to populate
-     * @param append true to add the keys to the list; false, to replace the keys
-     * in the list by the keys in the cache
      */
     public void populateWithKeys(AutoCompletionList list) {
@@ -257,22 +256,51 @@
      * @param list the list to populate
      * @param key the tag key
-     * @param append true to add the values to the list; false, to replace the values
-     * in the list by the tag values
      */
     public void populateWithTagValues(AutoCompletionList list, String key) {
-        list.add(getPresetValues(key), AutoCompletionItemPritority.IS_IN_STANDARD);
-        list.add(getDataValues(key), AutoCompletionItemPritority.IS_IN_DATASET);
-    }
-
+        populateWithTagValues(list, Arrays.asList(key));
+    }
+
+    /**
+     * Populates the an {@see AutoCompletionList} with the currently cached
+     * values for some given tags
+     *
+     * @param list the list to populate
+     * @param key the tag keys
+     */
+    public void populateWithTagValues(AutoCompletionList list, List<String> keys) {
+        for (String key : keys) {
+            list.add(getPresetValues(key), AutoCompletionItemPritority.IS_IN_STANDARD);
+            list.add(getDataValues(key), AutoCompletionItemPritority.IS_IN_DATASET);
+        }
+    }
+
+    /**
+     * Returns the currently cached tag keys.
+     * @return a list of tag keys
+     */
     public List<AutoCompletionListItem> getKeys() {
         AutoCompletionList list = new AutoCompletionList();
         populateWithKeys(list);
-        return new ArrayList<AutoCompletionListItem>(list.getList());
-    }
-
+        return list.getList();
+    }
+
+    /**
+     * Returns the currently cached tag values for a given tag key.
+     * @param key the tag key
+     * @return a list of tag values
+     */
     public List<AutoCompletionListItem> getValues(String key) {
+        return getValues(Arrays.asList(key));
+    }
+
+    /**
+     * Returns the currently cached tag values for a given list of tag keys.
+     * @param keys the tag keys
+     * @return a list of tag values
+     */
+    public List<AutoCompletionListItem> getValues(List<String> keys) {
         AutoCompletionList list = new AutoCompletionList();
-        populateWithTagValues(list, key);
-        return new ArrayList<AutoCompletionListItem>(list.getList());
+        populateWithTagValues(list, keys);
+        return list.getList();
     }
 
