Index: applications/editors/josm/plugins/terracer/src/terracer/HouseNumberInputDialog.java
===================================================================
--- applications/editors/josm/plugins/terracer/src/terracer/HouseNumberInputDialog.java	(revision 30643)
+++ applications/editors/josm/plugins/terracer/src/terracer/HouseNumberInputDialog.java	(revision 30737)
@@ -366,5 +366,5 @@
      */
     TreeSet<String> createAutoCompletionInfo() {
-        final TreeSet<String> names = new TreeSet<String>();
+        final TreeSet<String> names = new TreeSet<>();
         for (OsmPrimitive osm : Main.main.getCurrentDataSet()
                 .allNonDeletedPrimitives()) {
Index: applications/editors/josm/plugins/terracer/src/terracer/ReverseTerraceAction.java
===================================================================
--- applications/editors/josm/plugins/terracer/src/terracer/ReverseTerraceAction.java	(revision 30643)
+++ applications/editors/josm/plugins/terracer/src/terracer/ReverseTerraceAction.java	(revision 30737)
@@ -55,10 +55,10 @@
         // Set to keep track of all the nodes that have been visited - that is: if
         // we encounter them again we will not follow onto the connected ways.
-        HashSet<Node> visitedNodes = new HashSet<Node>();
+        HashSet<Node> visitedNodes = new HashSet<>();
 
         // Set to keep track of the ways the algorithm has seen, but not yet visited.
         // Since when a way is visited all of its nodes are marked as visited, there
         // is no need to keep a visitedWays set.
-        HashSet<Way> front = new HashSet<Way>();
+        HashSet<Way> front = new HashSet<>();
 
         // Find the first or last way from the teracced houses.
@@ -85,8 +85,8 @@
 
         // This is like a visitedWays set, but in a linear order.
-        LinkedList<Way> orderedWays = new LinkedList<Way>();
+        LinkedList<Way> orderedWays = new LinkedList<>();
 
         // And the tags to reverse on the orderedWays.
-        LinkedList<String> houseNumbers = new LinkedList<String>();
+        LinkedList<String> houseNumbers = new LinkedList<>();
 
         while (front.size() > 0) {
@@ -114,5 +114,5 @@
         }
 
-        Collection<Command> commands = new LinkedList<Command>();
+        Collection<Command> commands = new LinkedList<>();
         for (int i = 0; i < orderedWays.size(); ++i) {
             commands.add(new ChangePropertyCommand(
Index: applications/editors/josm/plugins/terracer/src/terracer/TerracerAction.java
===================================================================
--- applications/editors/josm/plugins/terracer/src/terracer/TerracerAction.java	(revision 30643)
+++ applications/editors/josm/plugins/terracer/src/terracer/TerracerAction.java	(revision 30737)
@@ -82,5 +82,5 @@
 
     protected static final Set<Relation> findAssociatedStreets(Collection<OsmPrimitive> objects) {
-        Set<Relation> result = new HashSet<Relation>();
+        Set<Relation> result = new HashSet<>();
         if (objects != null) {
             for (OsmPrimitive c : objects) {
@@ -113,5 +113,5 @@
         Way street = null;
         String streetname = null;
-        ArrayList<Node> housenumbers = new ArrayList<Node>();
+        ArrayList<Node> housenumbers = new ArrayList<>();
         Node init = null;
 
@@ -361,8 +361,8 @@
         // This list will contain nodes of the outline that are used in new lines.
         // These nodes will not be deleted with the outline (if deleting was prompted).
-        ArrayList<Node> reused_nodes = new ArrayList<Node>();
-
-        this.commands = new LinkedList<Command>();
-        Collection<Way> ways = new LinkedList<Way>();
+        ArrayList<Node> reused_nodes = new ArrayList<>();
+
+        this.commands = new LinkedList<>();
+        Collection<Way> ways = new LinkedList<>();
 
         if (nb > 1) {
@@ -401,5 +401,5 @@
                 // Delete outline nodes having no tags and referrers but the outline itself
                 List<Node> nodes = outline.getNodes();
-                ArrayList<Node> nodesToDelete = new ArrayList<Node>();
+                ArrayList<Node> nodesToDelete = new ArrayList<>();
                 for (Node n : nodes)
                     if (!n.hasKeys() && n.getReferrers().size() == 1 && !reused_nodes.contains(n))
@@ -462,5 +462,5 @@
                                 tagsInConflict, primitives, Collections.singleton(outline));
                         if (!conflictCommands.isEmpty()) {
-                            List<Command> newCommands = new ArrayList<Command>(commands);
+                            List<Command> newCommands = new ArrayList<>(commands);
                             newCommands.addAll(conflictCommands);
                             setSequence(newCommands.toArray(new Command[0]));
@@ -638,5 +638,5 @@
         }
 
-        return new Pair<Way, Way>(front, back);
+        return new Pair<>(front, back);
     }
 
@@ -700,5 +700,5 @@
 
         final int length = a.length;
-        ArrayList<SortWithIndex> sortable = new ArrayList<SortWithIndex>(length);
+        ArrayList<SortWithIndex> sortable = new ArrayList<>(length);
         for (int i = 0; i < length; ++i) {
             sortable.add(new SortWithIndex(a[i], i));
