Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/CollectionUtils.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/CollectionUtils.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/CollectionUtils.java	(revision 30737)
@@ -37,5 +37,5 @@
     
     public static <E> Set<E> toSet(Iterable<? extends E> iterable) {
-        final Set<E> set = new HashSet<E>();
+        final Set<E> set = new HashSet<>();
         
         for (E e : iterable) {
@@ -47,5 +47,5 @@
     
     public static <E> List<E> toList(Iterable<? extends E> iterable) {
-        final List<E> list = new ArrayList<E>();
+        final List<E> list = new ArrayList<>();
         
         for (E e : iterable) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiContainer.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiContainer.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiContainer.java	(revision 30737)
@@ -44,6 +44,6 @@
     private final double laneWidth;
     
-    private final Map<Junction, JunctionGui> junctions = new HashMap<Junction, JunctionGui>();
-    private final Map<Road, RoadGui> roads = new HashMap<Road, RoadGui>();
+    private final Map<Junction, JunctionGui> junctions = new HashMap<>();
+    private final Map<Road, RoadGui> roads = new HashMap<>();
     
     private final Stroke connectionStroke;
@@ -159,9 +159,9 @@
         }
         
-        final List<Junction> primaries = new ArrayList<Junction>(mc.getPrimaryJunctions());
-        final List<Double> top = new ArrayList<Double>();
-        final List<Double> left = new ArrayList<Double>();
-        final List<Double> right = new ArrayList<Double>();
-        final List<Double> bottom = new ArrayList<Double>();
+        final List<Junction> primaries = new ArrayList<>(mc.getPrimaryJunctions());
+        final List<Double> top = new ArrayList<>();
+        final List<Double> left = new ArrayList<>();
+        final List<Double> right = new ArrayList<>();
+        final List<Double> bottom = new ArrayList<>();
         
         for (Junction j : primaries) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiUtil.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiUtil.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiUtil.java	(revision 30737)
@@ -133,5 +133,5 @@
     
     public static List<Point2D> locs(Iterable<Junction> junctions) {
-        final List<Point2D> locs = new ArrayList<Point2D>();
+        final List<Point2D> locs = new ArrayList<>();
         
         for (Junction j : junctions) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/JunctionGui.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/JunctionGui.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/JunctionGui.java	(revision 30737)
@@ -296,5 +296,5 @@
     final double y;
     
-    private final NavigableMap<Double, Linkage> roads = new TreeMap<Double, Linkage>();
+    private final NavigableMap<Double, Linkage> roads = new TreeMap<>();
     
     private final Path2D area = new Path2D.Double();
@@ -310,5 +310,5 @@
         this.y = loc.getY();
         
-        final Set<Road> done = new HashSet<Road>();
+        final Set<Road> done = new HashSet<>();
         for (Road r : j.getRoads()) {
             if (!done.contains(r)) {
@@ -363,5 +363,5 @@
     
     private Iterable<Corner> corners() {
-        final List<Corner> result = new ArrayList<JunctionGui.Corner>(roads.size());
+        final List<Corner> result = new ArrayList<>(roads.size());
         
         Linkage last = roads.lastEntry().getValue();
@@ -396,5 +396,5 @@
     
     public Set<RoadGui> getRoads() {
-        final Set<RoadGui> result = new HashSet<RoadGui>();
+        final Set<RoadGui> result = new HashSet<>();
         
         for (Linkage l : roads.values()) {
@@ -435,8 +435,8 @@
         g2d.fill(area);
         
-        final List<InteractiveElement> result = new ArrayList<InteractiveElement>();
+        final List<InteractiveElement> result = new ArrayList<>();
         
         if (getModel().isPrimary()) {
-            for (Road.End r : new HashSet<Road.End>(getModel().getRoadEnds())) {
+            for (Road.End r : new HashSet<>(getModel().getRoadEnds())) {
                 for (Turn t : r.getTurns()) {
                     result.add(new TurnConnection(t));
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/JunctionPane.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/JunctionPane.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/JunctionPane.java	(revision 30737)
@@ -162,5 +162,5 @@
     private BufferedImage interactive;
     
-    private final NavigableMap<Integer, List<InteractiveElement>> interactives = new TreeMap<Integer, List<InteractiveElement>>();
+    private final NavigableMap<Integer, List<InteractiveElement>> interactives = new TreeMap<>();
     private State state;
     private InteractiveElement dragging;
@@ -423,5 +423,5 @@
     
     private List<InteractiveElement> interactives() {
-        final List<InteractiveElement> result = new ArrayList<InteractiveElement>();
+        final List<InteractiveElement> result = new ArrayList<>();
         
         for (List<InteractiveElement> ies : interactives.descendingMap().values()) {
@@ -461,5 +461,5 @@
             final List<InteractiveElement> list;
             if (existing == null) {
-                list = new ArrayList<InteractiveElement>();
+                list = new ArrayList<>();
                 interactives.put(ie.getZIndex(), list);
             } else {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/LaneGui.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/LaneGui.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/LaneGui.java	(revision 30737)
@@ -241,5 +241,5 @@
             }
             
-            final List<Road> via = new ArrayList<Road>();
+            final List<Road> via = new ArrayList<>();
             assert (s.getViaConnectors().size() & 1) == 0;
             for (int i = 0; i < s.getViaConnectors().size(); i += 2) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/RoadGui.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/RoadGui.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/RoadGui.java	(revision 30737)
@@ -249,5 +249,5 @@
             this.end = end;
             
-            final List<LaneGui> lanes = new ArrayList<LaneGui>(end.getLanes().size());
+            final List<LaneGui> lanes = new ArrayList<>(end.getLanes().size());
             for (Lane l : end.getOppositeEnd().getLanes()) {
                 lanes.add(new LaneGui(RoadGui.this, l));
@@ -464,5 +464,5 @@
     
     private static final List<Point2D> prepended(List<Point2D> bends, Point2D point) {
-        final List<Point2D> result = new ArrayList<Point2D>(bends.size() + 1);
+        final List<Point2D> result = new ArrayList<>(bends.size() + 1);
         result.add(point);
         result.addAll(bends);
@@ -486,5 +486,5 @@
     
     private final Road road;
-    private final List<Segment> segments = new ArrayList<Segment>();
+    private final List<Segment> segments = new ArrayList<>();
     
     final double connectorRadius;
@@ -501,5 +501,5 @@
         this.incomingB = new IncomingConnector(road.getToEnd());
         
-        final List<Point2D> bends = new ArrayList<Point2D>();
+        final List<Point2D> bends = new ArrayList<>();
         final List<Node> nodes = road.getRoute().getNodes();
         for (int i = nodes.size() - 2; i > 0; --i) {
@@ -582,5 +582,5 @@
     
     List<InteractiveElement> paint(Graphics2D g2d) {
-        final List<InteractiveElement> result = new ArrayList<InteractiveElement>();
+        final List<InteractiveElement> result = new ArrayList<>();
         
         result.addAll(paintLanes(g2d));
@@ -604,5 +604,5 @@
     
     private List<LaneAdder> laneAdders() {
-        final List<LaneAdder> result = new ArrayList<LaneAdder>(4);
+        final List<LaneAdder> result = new ArrayList<>(4);
         
         if (!incomingA.getLanes().isEmpty()) {
@@ -624,5 +624,5 @@
         }
         
-        final List<Extender> result = new ArrayList<Extender>();
+        final List<Extender> result = new ArrayList<>();
         
         final Node n = end.getJunction().getNode();
@@ -678,5 +678,5 @@
         g2d.draw(middleLines);
         
-        final List<InteractiveElement> result = new ArrayList<InteractiveElement>();
+        final List<InteractiveElement> result = new ArrayList<>();
         
         moveIncoming(getModel().getFromEnd());
@@ -707,5 +707,5 @@
         
         Path innerPath = middle.offset(innerMargin, -1, -1, innerMargin);
-        final List<Path> linePaths = new ArrayList<Path>();
+        final List<Path> linePaths = new ArrayList<>();
         linePaths.add(innerPath);
         
@@ -867,5 +867,5 @@
     
     public List<LaneGui> getLanes() {
-        final List<LaneGui> result = new ArrayList<LaneGui>();
+        final List<LaneGui> result = new ArrayList<>();
         
         result.addAll(incomingB.getLanes());
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/State.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/State.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/State.java	(revision 30737)
@@ -47,5 +47,5 @@
             }
             
-            final List<RoadGui.ViaConnector> tmp = new ArrayList<RoadGui.ViaConnector>(vias.size() + 1);
+            final List<RoadGui.ViaConnector> tmp = new ArrayList<>(vias.size() + 1);
             final boolean even = (vias.size() & 1) == 0;
             final RoadGui.ViaConnector last = vias.get(vias.size() - 1);
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/TurnLanesDialog.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/TurnLanesDialog.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/TurnLanesDialog.java	(revision 30737)
@@ -142,5 +142,5 @@
     private final JToggleButton validateButton = new JToggleButton(validateAction);
     
-    private final Set<OsmPrimitive> selected = new HashSet<OsmPrimitive>();
+    private final Set<OsmPrimitive> selected = new HashSet<>();
     
     private boolean editing = true;
@@ -205,5 +205,5 @@
 	@Override
 	public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-        if (selected.equals(new HashSet<OsmPrimitive>(newSelection))) {
+        if (selected.equals(new HashSet<>(newSelection))) {
             return;
         }
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/ValidationPanel.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/ValidationPanel.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/ValidationPanel.java	(revision 30737)
@@ -74,5 +74,5 @@
     
     private final DefaultTableModel issueModel = new DefaultTableModel(COLUMN_NAMES, 0);
-    private final List<Issue> issues = new ArrayList<Issue>();
+    private final List<Issue> issues = new ArrayList<>();
     private final JTable issueTable = new JTable(issueModel) {
         private static final long serialVersionUID = 6323348290180585298L;
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/GenericCommand.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/GenericCommand.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/GenericCommand.java	(revision 30737)
@@ -34,5 +34,5 @@
     private final DataSet dataSet;
     private final String description;
-    private final Map<OsmPrimitive, BeforeAfter> beforeAfters = new HashMap<OsmPrimitive, BeforeAfter>();
+    private final Map<OsmPrimitive, BeforeAfter> beforeAfters = new HashMap<>();
     
     public GenericCommand(DataSet dataSet, String description) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Issue.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Issue.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Issue.java	(revision 30737)
@@ -49,5 +49,5 @@
         QuickFix quickFix) {
         this.relation = relation;
-        this.primitives = Collections.unmodifiableList(new ArrayList<OsmPrimitive>(primitives));
+        this.primitives = Collections.unmodifiableList(new ArrayList<>(primitives));
         this.severity = severity;
         this.description = description;
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Junction.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Junction.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Junction.java	(revision 30737)
@@ -13,5 +13,5 @@
     
     private final Node node;
-    private final Set<Way> roads = new HashSet<Way>();
+    private final Set<Way> roads = new HashSet<>();
     
     Junction(ModelContainer container, Node n) {
@@ -29,5 +29,5 @@
     
     public List<Road> getRoads() {
-        final List<Road> result = new ArrayList<Road>(roads.size());
+        final List<Road> result = new ArrayList<>(roads.size());
         
         for (Way w : roads) {
@@ -39,5 +39,5 @@
     
     public List<Road.End> getRoadEnds() {
-        final List<Road.End> result = new ArrayList<Road.End>(roads.size());
+        final List<Road.End> result = new ArrayList<>(roads.size());
         
         for (Way w : roads) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Lane.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Lane.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Lane.java	(revision 30737)
@@ -27,5 +27,5 @@
     
     static List<Lane> load(Road.End roadEnd) {
-        final List<Lane> result = new ArrayList<Lane>();
+        final List<Lane> result = new ArrayList<>();
         int i;
         
@@ -50,5 +50,5 @@
     
     static List<Double> loadLengths(Relation r, String key, double lengthBound) {
-        final List<Double> result = new ArrayList<Double>();
+        final List<Double> result = new ArrayList<>();
         
         if (r != null && r.get(key) != null) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/ModelContainer.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/ModelContainer.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/ModelContainer.java	(revision 30737)
@@ -24,10 +24,10 @@
     
     public static ModelContainer create(Iterable<Node> primaryNodes, Iterable<Way> primaryWays) {
-        return new ModelContainer(new HashSet<Node>(CollectionUtils.toList(primaryNodes)), new HashSet<Way>(
+        return new ModelContainer(new HashSet<>(CollectionUtils.toList(primaryNodes)), new HashSet<>(
                 CollectionUtils.toList(primaryWays)), false);
     }
     
     public static ModelContainer createEmpty(Iterable<Node> primaryNodes, Iterable<Way> primaryWays) {
-        return new ModelContainer(new HashSet<Node>(CollectionUtils.toList(primaryNodes)), new HashSet<Way>(
+        return new ModelContainer(new HashSet<>(CollectionUtils.toList(primaryNodes)), new HashSet<>(
                 CollectionUtils.toList(primaryWays)), true);
     }
@@ -43,5 +43,5 @@
             closed = true;
             
-            for (Node n : new ArrayList<Node>(closedNodes)) {
+            for (Node n : new ArrayList<>(closedNodes)) {
                 for (Way w : Utils.filterRoads(n.getReferrers())) {
                     if (w.isFirstLastNode(n)) {
@@ -50,5 +50,5 @@
                 }
                 
-                for (Way w : new ArrayList<Way>(closedWays)) {
+                for (Way w : new ArrayList<>(closedWays)) {
                     closed &= close(closedNodes, closedWays, w);
                 }
@@ -78,5 +78,5 @@
         boolean closed = true;
         
-        final List<Way> via = new ArrayList<Way>();
+        final List<Way> via = new ArrayList<>();
         for (RelationMember m : Utils.getMembers(r, Constants.TURN_ROLE_VIA)) {
             if (m.isWay()) {
@@ -113,6 +113,6 @@
     }
     
-    private final Map<Node, Junction> junctions = new HashMap<Node, Junction>();
-    private final Map<Way, Road> roads = new HashMap<Way, Road>();
+    private final Map<Node, Junction> junctions = new HashMap<>();
+    private final Map<Way, Road> roads = new HashMap<>();
     
     private final Set<Node> primaryNodes;
@@ -123,10 +123,10 @@
     private ModelContainer(Set<Node> primaryNodes, Set<Way> primaryWays, boolean empty) {
         if (empty) {
-            this.primaryNodes = Collections.unmodifiableSet(new HashSet<Node>(primaryNodes));
-            this.primaryWays = Collections.unmodifiableSet(new HashSet<Way>(primaryWays));
+            this.primaryNodes = Collections.unmodifiableSet(new HashSet<>(primaryNodes));
+            this.primaryWays = Collections.unmodifiableSet(new HashSet<>(primaryWays));
             this.empty = true;
         } else {
-            final Set<Node> closedNodes = filterUsables(new HashSet<Node>(primaryNodes));
-            final Set<Way> closedWays = filterUsables(new HashSet<Way>(primaryWays));
+            final Set<Node> closedNodes = filterUsables(new HashSet<>(primaryNodes));
+            final Set<Way> closedWays = filterUsables(new HashSet<>(primaryWays));
             
             close(closedNodes, closedWays);
@@ -154,8 +154,8 @@
     
     private Set<Pair<Way, Junction>> createPrimaryJunctions() {
-        final Set<Pair<Way, Junction>> roads = new HashSet<Pair<Way, Junction>>();
+        final Set<Pair<Way, Junction>> roads = new HashSet<>();
         
         for (Node n : primaryNodes) {
-            final List<Way> ws = new ArrayList<Way>();
+            final List<Way> ws = new ArrayList<>();
             for (Way w : Utils.filterRoads(n.getReferrers())) {
                 if (w.isFirstLastNode(n)) {
@@ -167,5 +167,5 @@
                 final Junction j = register(new Junction(this, n));
                 for (Way w : ws) {
-                    roads.add(new Pair<Way, Junction>(w, j));
+                    roads.add(new Pair<>(w, j));
                 }
             }
@@ -228,5 +228,5 @@
         final String ERR_ILLEGAL_ARGS = "The given roads can not be merged into one.";
         
-        final List<Way> ws = new ArrayList<Way>(CollectionUtils.toList(CollectionUtils.reverse(a.getRoute().getWays())));
+        final List<Way> ws = new ArrayList<>(CollectionUtils.toList(CollectionUtils.reverse(a.getRoute().getWays())));
         final List<Way> bws = b.getRoute().getWays();
         
@@ -262,5 +262,5 @@
         }
         
-        final Set<Junction> pjs = new HashSet<Junction>();
+        final Set<Junction> pjs = new HashSet<>();
         for (Node n : primaryNodes) {
             pjs.add(getJunction(n));
@@ -274,5 +274,5 @@
         }
         
-        final Set<Road> prs = new HashSet<Road>();
+        final Set<Road> prs = new HashSet<>();
         for (Way w : primaryWays) {
             prs.add(roads.get(w));
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Road.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Road.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Road.java	(revision 30737)
@@ -245,5 +245,5 @@
             
             final double extraLength = left ? extraLengthLeft : extraLengthRight;
-            final List<Double> newLengths = new ArrayList<Double>();
+            final List<Double> newLengths = new ArrayList<>();
             int i = Math.abs(lane.getIndex());
             final String key = left ? Constants.LENGTHS_KEY_LENGTHS_LEFT : Constants.LENGTHS_KEY_LENGTHS_RIGHT;
@@ -275,6 +275,6 @@
     
     private static Pair<Relation, Relation> getLengthRelations(Way w, Node n) {
-        final List<Relation> left = new ArrayList<Relation>();
-        final List<Relation> right = new ArrayList<Relation>();
+        final List<Relation> left = new ArrayList<>();
+        final List<Relation> right = new ArrayList<>();
         
         for (OsmPrimitive p : w.getReferrers()) {
@@ -307,5 +307,5 @@
         }
         
-        return new Pair<Relation, Relation>( //
+        return new Pair<>( //
                 left.isEmpty() ? null : left.get(0), //
                 right.isEmpty() ? null : right.get(0) //
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java	(revision 30737)
@@ -135,5 +135,5 @@
     
     public static Route create(List<Way> ws, Node end) {
-        final List<Segment> segments = new ArrayList<Segment>(ws.size());
+        final List<Segment> segments = new ArrayList<>(ws.size());
         
         for (Way w : ws) {
@@ -153,5 +153,5 @@
     
     private Route(List<Segment> segments) {
-        this.segments = Collections.unmodifiableList(new ArrayList<Segment>(segments));
+        this.segments = Collections.unmodifiableList(new ArrayList<>(segments));
     }
     
@@ -161,5 +161,5 @@
     
     public List<Node> getNodes() {
-        final List<Node> ns = new ArrayList<Node>();
+        final List<Node> ns = new ArrayList<>();
         
         ns.add(segments.get(0).getStart());
@@ -220,5 +220,5 @@
     
     public List<Way> getWays() {
-        final List<Way> ws = new ArrayList<Way>();
+        final List<Way> ws = new ArrayList<>();
         
         for (Segment s : segments) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Turn.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Turn.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Turn.java	(revision 30737)
@@ -21,5 +21,5 @@
 public final class Turn {
     static Set<Turn> load(ModelContainer c, String role, OsmPrimitive primitive) {
-        final Set<Turn> result = new HashSet<Turn>();
+        final Set<Turn> result = new HashSet<>();
         
         for (Relation r : OsmPrimitive.getFilteredList(primitive.getReferrers(), Relation.class)) {
@@ -61,5 +61,5 @@
         
         final List<Way> tmp = Utils.getMemberWays(r, Constants.TURN_ROLE_VIA);
-        final LinkedList<Road> via = new LinkedList<Road>();
+        final LinkedList<Road> via = new LinkedList<>();
         
         final Road.End fromRoadEnd = c.getJunction(Utils.lineUp(from, tmp.get(0))).getRoadEnd(from);
@@ -97,5 +97,5 @@
         n = Utils.getOppositeEnd(to, n);
         
-        final Set<Turn> result = new HashSet<Turn>();
+        final Set<Turn> result = new HashSet<>();
         for (int i : indices(r, Constants.TURN_KEY_LANES)) {
             result.add(new Turn(r, fromRoadEnd.getLane(Lane.Kind.REGULAR, i), via, toRoadEnd));
@@ -111,8 +111,8 @@
         
         if (joined == null) {
-            return new ArrayList<Integer>(1);
-        }
-        
-        final List<Integer> result = new ArrayList<Integer>();
+            return new ArrayList<>(1);
+        }
+        
+        final List<Integer> result = new ArrayList<>();
         for (String lane : Constants.SPLIT_PATTERN.split(joined)) {
             result.add(Integer.parseInt(lane));
@@ -136,5 +136,5 @@
         final Road.End toRoadEnd = j.getRoadEnd(to);
         
-        final Set<Turn> result = new HashSet<Turn>();
+        final Set<Turn> result = new HashSet<>();
         for (int i : indices(r, Constants.TURN_KEY_LANES)) {
             result.add(new Turn(r, fromRoadEnd.getLane(Lane.Kind.REGULAR, i), Collections.<Road> emptyList(), toRoadEnd));
@@ -217,5 +217,5 @@
     
     void fixReferences(GenericCommand cmd, boolean left, int index) {
-        final List<Integer> fixed = new ArrayList<Integer>();
+        final List<Integer> fixed = new ArrayList<>();
         for (int i : indices(relation, Constants.TURN_KEY_EXTRA_LANES)) {
             if (left ? i < index : i > index) {
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Utils.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Utils.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Utils.java	(revision 30737)
@@ -20,5 +20,5 @@
 
 public class Utils {
-    private static final Set<String> ROAD_HIGHWAY_VALUES = Collections.unmodifiableSet(new HashSet<String>(Arrays
+    private static final Set<String> ROAD_HIGHWAY_VALUES = Collections.unmodifiableSet(new HashSet<>(Arrays
             .asList("motorway", "motorway_link", "trunk", "trunk_link", "primary", "primary_link", "secondary",
                     "secondary_link", "tertiary", "tertiary_link", "residential", "unclassified", "road", "living_street", "service",
@@ -30,5 +30,5 @@
     
     public static final List<Way> filterRoads(List<OsmPrimitive> of) {
-        final List<Way> result = new ArrayList<Way>();
+        final List<Way> result = new ArrayList<>();
         
         for (OsmPrimitive p : of) {
@@ -70,5 +70,5 @@
     
     public static List<RelationMember> getMembers(Relation r, String role) {
-        final List<RelationMember> result = new ArrayList<RelationMember>();
+        final List<RelationMember> result = new ArrayList<>();
         for (RelationMember m : r.getMembers()) {
             if (m.getRole().equals(role)) {
@@ -88,5 +88,5 @@
     
     private static <T> List<T> mapMembers(List<RelationMember> ms, Class<T> t) {
-        final List<T> result = new ArrayList<T>(ms.size());
+        final List<T> result = new ArrayList<>(ms.size());
         for (RelationMember m : ms) {
             result.add(t.cast(m.getMember()));
@@ -102,5 +102,5 @@
      */
     public static Node lineUp(Way a, Way b) {
-        final Set<Node> s = new HashSet<Node>(Arrays.asList(a.firstNode(), a.lastNode(), b.firstNode(), b.lastNode()));
+        final Set<Node> s = new HashSet<>(Arrays.asList(a.firstNode(), a.lastNode(), b.firstNode(), b.lastNode()));
         if (a.firstNode() == a.lastNode() || b.firstNode().equals(b.lastNode()) || s.size() == 2) {
             throw new IllegalArgumentException("Cycles are not allowed.");
@@ -152,8 +152,8 @@
      */
     public static List<Route> orderWays(Iterable<Way> ways, Iterable<Node> nodes) {
-        final List<Way> ws = new LinkedList<Way>(CollectionUtils.toList(ways));
-        final Set<Node> ns = new HashSet<Node>(CollectionUtils.toList(nodes));
-        
-        final List<Route> result = new ArrayList<Route>();
+        final List<Way> ws = new LinkedList<>(CollectionUtils.toList(ways));
+        final Set<Node> ns = new HashSet<>(CollectionUtils.toList(nodes));
+        
+        final List<Route> result = new ArrayList<>();
         
         while (!ws.isEmpty()) {
@@ -175,5 +175,5 @@
         }
         
-        final List<Way> result = new ArrayList<Way>();
+        final List<Way> result = new ArrayList<>();
         result.add(w);
         Node n = first ? w.lastNode() : w.firstNode();
@@ -205,5 +205,5 @@
     
     public static Iterable<Way> flattenVia(Node start, List<Road> via, Node end) {
-        final List<Way> result = new ArrayList<Way>();
+        final List<Way> result = new ArrayList<>();
         
         Node n = start;
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Validator.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Validator.java	(revision 30736)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Validator.java	(revision 30737)
@@ -105,6 +105,6 @@
     
     public List<Issue> validate(DataSet dataSet) {
-        final List<Relation> lenghts = new ArrayList<Relation>();
-        final List<Relation> turns = new ArrayList<Relation>();
+        final List<Relation> lenghts = new ArrayList<>();
+        final List<Relation> turns = new ArrayList<>();
         
         for (Relation r : OsmPrimitive.getFilteredList(dataSet.allPrimitives(), Relation.class)) {
@@ -121,7 +121,7 @@
         }
         
-        final List<Issue> issues = new ArrayList<Issue>();
-        
-        final Map<IncomingLanes.Key, IncomingLanes> incomingLanes = new HashMap<IncomingLanes.Key, IncomingLanes>();
+        final List<Issue> issues = new ArrayList<>();
+        
+        final Map<IncomingLanes.Key, IncomingLanes> incomingLanes = new HashMap<>();
         issues.addAll(validateLengths(lenghts, incomingLanes));
         issues.addAll(validateTurns(turns, incomingLanes));
@@ -138,5 +138,5 @@
     
     private List<Issue> validateLengths(List<Relation> lenghts, Map<IncomingLanes.Key, IncomingLanes> incomingLanes) {
-        final List<Issue> issues = new ArrayList<Issue>();
+        final List<Issue> issues = new ArrayList<>();
         
         for (Relation r : lenghts) {
@@ -148,5 +148,5 @@
     
     private List<Issue> validateLengths(Relation r, Map<IncomingLanes.Key, IncomingLanes> incomingLanes) {
-        final List<Issue> issues = new ArrayList<Issue>();
+        final List<Issue> issues = new ArrayList<>();
         
         try {
@@ -227,7 +227,7 @@
     
     private Route orderWays(final Relation r, List<Way> ways, Node end, List<Issue> issues, String role, String type) {
-        final List<Way> unordered = new ArrayList<Way>(ways);
-        final List<Way> ordered = new ArrayList<Way>(ways.size());
-        final Set<Node> ends = new HashSet<Node>(); // to find cycles
+        final List<Way> unordered = new ArrayList<>(ways);
+        final List<Way> ordered = new ArrayList<>(ways.size());
+        final Set<Node> ends = new HashSet<>(); // to find cycles
         
         Node current = end;
@@ -280,5 +280,5 @@
     
     private List<Issue> validateTurns(List<Relation> turns, Map<IncomingLanes.Key, IncomingLanes> incomingLanes) {
-        final List<Issue> issues = new ArrayList<Issue>();
+        final List<Issue> issues = new ArrayList<>();
         
         for (Relation r : turns) {
@@ -290,5 +290,5 @@
     
     private List<Issue> validateTurns(Relation r, Map<IncomingLanes.Key, IncomingLanes> incomingLanes) {
-        final List<Issue> issues = new ArrayList<Issue>();
+        final List<Issue> issues = new ArrayList<>();
         
         try {
@@ -367,5 +367,5 @@
         }
         
-        final List<Integer> result = new ArrayList<Integer>();
+        final List<Integer> result = new ArrayList<>();
         
         for (String s : Constants.SPLIT_PATTERN.split(ints)) {
