Index: /trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 1612)
+++ /trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 1613)
@@ -47,6 +47,5 @@
 
             for (String key : m.keySet()) {
-                if (! key.equals("created_by"))
-                    clist.add(new ChangePropertyCommand(selectionSubset, key, osm.keys.get(key)));
+                clist.add(new ChangePropertyCommand(selectionSubset, key, osm.keys.get(key)));
             }
         }
@@ -90,6 +89,4 @@
                 continue;
             for (String key : osm.keys.keySet()) {
-                if (key.equals("created_by")) // we ignore created_by
-                    continue;
                 String value = osm.keys.get(key);
                 if (! kvSeen.containsKey(key))
Index: /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 1612)
+++ /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 1613)
@@ -67,5 +67,5 @@
                 try
                 {
-                    final Collection<Command> changePropertyCommands = reverseWayTagCorrector.execute(wnew);
+                    final Collection<Command> changePropertyCommands = reverseWayTagCorrector.execute(w, wnew);
                     propertiesUpdated = propertiesUpdated
                         || (changePropertyCommands != null && !changePropertyCommands.isEmpty());
Index: /trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 1612)
+++ /trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 1613)
@@ -35,5 +35,5 @@
             this.b = b;
             startPattern = Pattern.compile(
-                    "^(" + a + "|" + b + ")" + SEPARATOR,
+                    "^(" + a + "|" + b + ")(" + SEPARATOR + "|$)",
                     Pattern.CASE_INSENSITIVE);
             endPattern = Pattern.compile(
@@ -68,5 +68,5 @@
 
     @Override
-    public Collection<Command> execute(Way way) throws UserCancelException {
+    public Collection<Command> execute(Way oldway, Way way) throws UserCancelException {
         Map<OsmPrimitive, List<TagCorrection>> tagCorrectionsMap =
                 new HashMap<OsmPrimitive, List<TagCorrection>>();
@@ -113,5 +113,5 @@
         for (Relation relation : Main.ds.relations) {
             for (RelationMember member : relation.members) {
-                if (!member.member.realEqual(way, true)
+                if (!member.member.realEqual(oldway, true)
                         || member.role.length() == 0)
                     continue;
Index: /trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java	(revision 1612)
+++ /trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java	(revision 1613)
@@ -33,5 +33,5 @@
 public abstract class TagCorrector<P extends OsmPrimitive> {
 
-    public abstract Collection<Command> execute(P primitive)
+    public abstract Collection<Command> execute(P primitive, P oldprimitive)
         throws UserCancelException;
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1612)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1613)
@@ -228,9 +228,4 @@
             value = null; // delete the key instead
         }
-        if (newkey.equals("created_by"))
-        {
-            // we don't allow created_by to be changed.
-            return;
-        }
         if (key.equals(newkey) || value == null)
             Main.main.undoRedo.add(new ChangePropertyCommand(sel, newkey, value));
@@ -349,6 +344,4 @@
         if (value.equals(""))
             return;
-        if (key.equals("created_by"))
-            return;
         Main.main.undoRedo.add(new ChangePropertyCommand(sel, key, value));
         DataSet.fireSelectionChanged(sel);
