Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/GridLayer.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/GridLayer.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/GridLayer.java	(revision 17351)
@@ -175,5 +175,5 @@
         {
             Node lastN = null;
-            for (Node n : w.nodes) {
+            for (Node n : w.getNodes()) {
                 if (lastN == null) {
                     lastN = n;
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java	(revision 17351)
@@ -31,5 +31,4 @@
 import org.openstreetmap.josm.data.projection.Mercator;
 import org.openstreetmap.josm.gui.MapFrame;
-import org.openstreetmap.josm.gui.OptionPaneUtil;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -276,5 +275,5 @@
             } catch (InvocationTargetException ite) {
                 ite.getCause().printStackTrace();
-                OptionPaneUtil.showMessageDialog(Main.parent, 
+                JOptionPane.showMessageDialog(Main.parent, 
                 		tr("Error initializing test {0}:\n {1}", test.getClass()
                         .getSimpleName(), ite.getCause().getMessage()),
@@ -283,5 +282,5 @@
             } catch (Exception e) {
                 e.printStackTrace();
-                OptionPaneUtil.showMessageDialog(Main.parent, 
+                JOptionPane.showMessageDialog(Main.parent, 
                 		tr("Error initializing test {0}:\n {1}", test.getClass()
                         .getSimpleName(), e),
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/TestError.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/TestError.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/TestError.java	(revision 17351)
@@ -334,5 +334,5 @@
         public void visit(Way w) {
             Node lastN = null;
-            for (Node n : w.nodes) {
+            for (Node n : w.getNodes()) {
                 if (lastN == null) {
                     lastN = n;
@@ -347,7 +347,7 @@
 
         public void visit(WaySegment ws) {
-            if (ws.lowerIndex < 0 || ws.lowerIndex + 1 >= ws.way.nodes.size())
+            if (ws.lowerIndex < 0 || ws.lowerIndex + 1 >= ws.way.getNodesCount())
                 return;
-            Node a = ws.way.nodes.get(ws.lowerIndex), b = ws.way.nodes.get(ws.lowerIndex + 1);
+            Node a = ws.way.getNodes().get(ws.lowerIndex), b = ws.way.getNodes().get(ws.lowerIndex + 1);
             if (isSegmentVisible(a, b)) {
                 drawSegment(a, b, severity.getColor());
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java	(revision 17351)
@@ -16,5 +16,4 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.OptionPaneUtil;
 import org.openstreetmap.josm.plugins.validator.util.AgregatePrimitivesVisitor;
 import org.openstreetmap.josm.tools.GBC;
@@ -115,5 +114,5 @@
         p.add(new JScrollPane(errorPanel), GBC.eol());
 
-        int res  = OptionPaneUtil.showConfirmationDialog(Main.parent, p,
+        int res  = JOptionPane.showConfirmDialog(Main.parent, p,
         tr("Data with errors. Upload anyway?"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
         if(res == JOptionPane.NO_OPTION)
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidatorDialog.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidatorDialog.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidatorDialog.java	(revision 17351)
@@ -33,8 +33,6 @@
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
-import org.openstreetmap.josm.gui.OptionPaneUtil;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
-import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -119,6 +117,4 @@
         if (tree != null)
             tree.setVisible(v);
-        if (action != null && action.button != null)
-            action.button.setSelected(v);
         super.setVisible(v);
         Main.map.repaint();
@@ -191,6 +187,6 @@
                 if (asked == JOptionPane.DEFAULT_OPTION) {
                     String[] a = new String[] { tr("Whole group"), tr("Single elements"), tr("Nothing") };
-                    asked = OptionPaneUtil.showOptionDialog(Main.parent, tr("Ignore whole group or individual elements?"),
-                            tr("Ignoring elements"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE,
+                    asked = JOptionPane.showOptionDialog(Main.parent, tr("Ignore whole group or individual elements?"),
+                            tr("Ignoring elements"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null,
                             a, a[1]);
                 }
@@ -425,8 +421,8 @@
 
         public void visit(WaySegment ws) {
-            if (ws.lowerIndex < 0 || ws.lowerIndex + 1 >= ws.way.nodes.size())
+            if (ws.lowerIndex < 0 || ws.lowerIndex + 1 >= ws.way.getNodesCount())
                 return;
-            visit(ws.way.nodes.get(ws.lowerIndex));
-            visit(ws.way.nodes.get(ws.lowerIndex + 1));
+            visit(ws.way.getNodes().get(ws.lowerIndex));
+            visit(ws.way.getNodes().get(ws.lowerIndex + 1));
         }
     }
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/ChangePropertyKeyCommand.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/ChangePropertyKeyCommand.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/ChangePropertyKeyCommand.java	(revision 17351)
@@ -51,8 +51,10 @@
         if (!super.executeCommand()) return false; // save old
         for (OsmPrimitive osm : objects) {
-            if(osm.keys != null)
+            if(osm.hasKeys())
             {
                 osm.modified = true;
-                osm.put(newKey, osm.keys.remove(key) );
+                String oldValue= osm.get(key);
+                osm.put(newKey, oldValue );
+                osm.remove(key);
             }
         }
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/Coastlines.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/Coastlines.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/Coastlines.java	(revision 17351)
@@ -73,5 +73,5 @@
                     continue;
 
-                if( w.nodes.get(0).equals(w2.nodes.get(0)) || w.nodes.get(w.nodes.size() - 1).equals(w2.nodes.get(w2.nodes.size() - 1)))
+                if( w.getNodes().get(0).equals(w2.getNodes().get(0)) || w.getNodes().get(w.getNodesCount() - 1).equals(w2.getNodes().get(w2.getNodesCount() - 1)))
                 {
                     List<OsmPrimitive> primitives = new ArrayList<OsmPrimitive>();
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java	(revision 17351)
@@ -83,5 +83,5 @@
         String layer1 = w.get("layer");
 
-        int nodesSize = w.nodes.size();
+        int nodesSize = w.getNodesCount();
         for (int i = 0; i < nodesSize - 1; i++) {
             WaySegment ws = new WaySegment(w, i);
@@ -188,6 +188,6 @@
         {
             this.ws = ws;
-            this.n1 = ws.way.nodes.get(ws.lowerIndex);
-            this.n2 = ws.way.nodes.get(ws.lowerIndex + 1);
+            this.n1 = ws.way.getNodes().get(ws.lowerIndex);
+            this.n2 = ws.way.getNodes().get(ws.lowerIndex + 1);
             this.layer = layer;
             this.railway = railway;
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicatedWayNodes.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicatedWayNodes.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicatedWayNodes.java	(revision 17351)
@@ -28,5 +28,5 @@
 
         Node lastN = null;
-        for (Node n : w.nodes) {
+        for (Node n : w.getNodes()) {
             if (lastN == null) {
                 lastN = n;
@@ -45,17 +45,17 @@
         Way w = (Way) testError.getPrimitives().iterator().next();
         Way wnew = new Way(w);
-        wnew.nodes.clear();
+        wnew.setNodes(null);
         Node lastN = null;
-        for (Node n : w.nodes) {
+        for (Node n : w.getNodes()) {
             if (lastN == null) {
-                wnew.nodes.add(n);
+            	wnew.addNode(n);
             } else if (n == lastN) {
                 // Skip this node
             } else {
-                wnew.nodes.add(n);
+            	wnew.addNode(n);
             }
             lastN = n;
         }
-        if (wnew.nodes.size() < 2) {
+        if (wnew.getNodesCount() < 2) {
             // Empty way, delete
             return DeleteCommand.delete(Main.map.mapView.getEditLayer(), Collections.singleton(w));
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java	(revision 17351)
@@ -157,5 +157,5 @@
         Node lastN = null;
         int i = -2;
-        for (Node n : w.nodes) {
+        for (Node n : w.getNodes()) {
             i++;
             if (lastN == null) {
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/SelfIntersectingWay.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/SelfIntersectingWay.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/SelfIntersectingWay.java	(revision 17351)
@@ -27,6 +27,6 @@
         HashSet<Node> nodes = new HashSet<Node>();
 
-        for (int i = 1; i < w.nodes.size() - 1; i++) {
-            Node n = w.nodes.get(i);
+        for (int i = 1; i < w.getNodesCount() - 1; i++) {
+            Node n = w.getNode(i);
             if (nodes.contains(n)) {
                 errors.add(new TestError(this,
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/TagChecker.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/TagChecker.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/TagChecker.java	(revision 17351)
@@ -44,5 +44,4 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.OptionPaneUtil;
 import org.openstreetmap.josm.gui.preferences.TaggingPresetPreference;
 import org.openstreetmap.josm.gui.tagging.TaggingPreset;
@@ -390,5 +389,5 @@
         if(checkComplex)
         {
-            Map<String, String> props = (p.keys == null) ? Collections.<String, String>emptyMap() : p.keys;
+            Map<String, String> props = (p.getKeys() == null) ? Collections.<String, String>emptyMap() : p.getKeys();
             for(Entry<String, String> prop: props.entrySet() )
             {
@@ -452,5 +451,5 @@
         }
 
-        Map<String, String> props = (p.keys == null) ? Collections.<String, String>emptyMap() : p.keys;
+        Map<String, String> props = (p.getKeys() == null) ? Collections.<String, String>emptyMap() : p.getKeys();
         for(Entry<String, String> prop: props.entrySet() )
         {
@@ -620,5 +619,5 @@
         addSrcButton.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e) {
-                String source = OptionPaneUtil.showInputDialog(
+                String source = JOptionPane.showInputDialog(
                 		Main.parent, 
                 		tr("TagChecker source"),
@@ -645,5 +644,5 @@
                     if(Sources.getModel().getSize() == 0)
                     {
-                        String source = OptionPaneUtil.showInputDialog(Main.parent, tr("TagChecker source"), tr("TagChecker source"), JOptionPane.QUESTION_MESSAGE);
+                        String source = JOptionPane.showInputDialog(Main.parent, tr("TagChecker source"), tr("TagChecker source"), JOptionPane.QUESTION_MESSAGE);
                         if (source != null)
                             ((DefaultListModel)Sources.getModel()).addElement(source);
@@ -651,5 +650,5 @@
                     else
                     {
-                        OptionPaneUtil.showMessageDialog(
+                        JOptionPane.showMessageDialog(
                         		Main.parent, 
                         		tr("Please select the row to edit."),
@@ -660,5 +659,5 @@
                 }
                 else {
-                	String source = (String)OptionPaneUtil.showInputDialog(Main.parent,
+                	String source = (String)JOptionPane.showInputDialog(Main.parent,
                 			tr("TagChecker source"),
                 			tr("TagChecker source"),
@@ -676,5 +675,5 @@
             public void actionPerformed(ActionEvent e) {
                 if (Sources.getSelectedIndex() == -1)
-                    OptionPaneUtil.showMessageDialog(Main.parent, tr("Please select the row to delete."), tr("Information"), JOptionPane.QUESTION_MESSAGE);
+                    JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."), tr("Information"), JOptionPane.QUESTION_MESSAGE);
                 else {
                     ((DefaultListModel)Sources.getModel()).remove(Sources.getSelectedIndex());
@@ -800,5 +799,5 @@
         {
             i++;
-            Map<String, String> tags = p.keys;
+            Map<String, String> tags = p.getKeys();
             if( tags == null || tags.size() == 0 )
                 continue;
@@ -922,5 +921,5 @@
             public Boolean match(OsmPrimitive osm)
             {
-                for(Entry<String, String> prop: osm.keys.entrySet())
+                for(Entry<String, String> prop: osm.getKeys().entrySet())
                 {
                     String key = prop.getKey();
@@ -995,5 +994,5 @@
         public Boolean match(OsmPrimitive osm)
         {
-            if(osm.keys == null || (type == NODE && !(osm instanceof Node))
+            if(osm.getKeys() == null || (type == NODE && !(osm instanceof Node))
             || (type == RELATION && !(osm instanceof Relation)) || (type == WAY && !(osm instanceof Way)))
                 return false;
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnclosedWays.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnclosedWays.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnclosedWays.java	(revision 17351)
@@ -105,6 +105,6 @@
         if (type != null && !w.isClosed())
         {
-            Node f = w.nodes.get(0);
-            Node l = w.nodes.get(w.nodes.size() - 1);
+            Node f = w.getNode(0);
+            Node l = w.getNode(w.getNodesCount() - 1);
             if(force || f.getCoor().greatCircleDistance(l.getCoor()) < 10000)
             {
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnconnectedWays.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnconnectedWays.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnconnectedWays.java	(revision 17351)
@@ -176,5 +176,5 @@
         public boolean nearby(Node n, double dist)
         {
-            return !w.nodes.contains(n)
+            return !w.containsNode(n)
             && line.ptSegDist(n.getEastNorth().east(), n.getEastNorth().north()) < dist;
         }
@@ -192,5 +192,5 @@
         if( w.deleted || w.incomplete )
             return;
-        int size = w.nodes.size();
+        int size = w.getNodesCount();
         if(size < 2)
             return;
@@ -198,12 +198,12 @@
         {
             if(i < size-1)
-                addNode(w.nodes.get(i), middlenodes);
-            ways.add(new MyWaySegment(w, w.nodes.get(i-1), w.nodes.get(i)));
+                addNode(w.getNode(i), middlenodes);
+            ways.add(new MyWaySegment(w, w.getNode(i-1), w.getNode(i)));
         }
         Set<Node> set = endnodes;
         if(w.get("highway") != null || w.get("railway") != null)
             set = endnodes_highway;
-        addNode(w.nodes.get(0), set);
-        addNode(w.nodes.get(size-1), set);
+        addNode(w.getNode(0), set);
+        addNode(w.getNode(size-1), set);
     }
     private void addNode(Node n, Set<Node> s)
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java	(revision 17351)
@@ -78,5 +78,5 @@
     public void visit(Way w)
     {
-        for (Node n : w.nodes) {
+        for (Node n : w.getNodes()) {
             emptyNodes.remove(n);
         }
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java	(revision 17351)
@@ -65,5 +65,5 @@
         if (w.deleted || w.incomplete) return;
 
-        Map<String, String> tags = w.keys;
+        Map<String, String> tags = w.getKeys();
         if( tags != null )
         {
@@ -100,9 +100,9 @@
         }
 
-        if( w.nodes.size() == 0 )
+        if( w.getNodesCount() == 0 )
         {
             errors.add( new TestError(this, Severity.ERROR, tr("Empty ways"), EMPTY_WAY, w) );
         }
-        else if( w.nodes.size() == 1 )
+        else if( w.getNodesCount() == 1 )
         {
             errors.add( new TestError(this, Severity.ERROR, tr("One node ways"), ONE_NODE_WAY, w) );
@@ -117,6 +117,6 @@
         for (final Relation r : Main.main.getCurrentDataSet().relations)
         {
-            if(!r.deleted && !r.incomplete && r.keys != null
-            && "multipolygon".equals(r.keys.get("type")))
+            if(!r.deleted && !r.incomplete && r.getKeys() != null
+            && "multipolygon".equals(r.get("type")))
             {
                 for (RelationMember m : r.members)
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/WronglyOrderedWays.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/WronglyOrderedWays.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/WronglyOrderedWays.java	(revision 17351)
@@ -88,12 +88,12 @@
          */
 
-        if(w.nodes.get(0) == w.nodes.get(w.nodes.size()-1))
+        if(w.getNode(0) == w.getNode(w.getNodesCount()-1))
         {
             double area2 = 0;
 
-            for (int node = 1; node < w.nodes.size(); node++)
+            for (int node = 1; node < w.getNodesCount(); node++)
             {
-                area2 += (w.nodes.get(node-1).getCoor().lon() * w.nodes.get(node).getCoor().lat()
-                - w.nodes.get(node).getCoor().lon() * w.nodes.get(node-1).getCoor().lat());
+                area2 += (w.getNode(node-1).getCoor().lon() * w.getNode(node).getCoor().lat()
+                - w.getNode(node).getCoor().lon() * w.getNode(node-1).getCoor().lat());
             }
 
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/AgregatePrimitivesVisitor.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/AgregatePrimitivesVisitor.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/AgregatePrimitivesVisitor.java	(revision 17351)
@@ -57,5 +57,5 @@
         {
             aggregatedData.add(w);
-            for (Node n : w.nodes)
+            for (Node n : w.getNodes())
                 visit(n);
         }
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/Util.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/Util.java	(revision 17343)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/Util.java	(revision 17351)
@@ -39,9 +39,9 @@
     public static List<List<Way>> getWaysInCell(Way w, Map<Point2D,List<Way>> cellWays)
     {
-        if (w.nodes.size() == 0)
+        if (w.getNodesCount() == 0)
             return Collections.emptyList();
 
-        Node n1 = w.nodes.get(0);
-        Node n2 = w.nodes.get(w.nodes.size() - 1);
+        Node n1 = w.getNode(0);
+        Node n2 = w.getNode(w.getNodesCount() - 1);
 
         List<List<Way>> cells = new ArrayList<List<Way>>(2);
