Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 4725)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 4726)
@@ -306,5 +306,5 @@
      * All data sources of this DataSet.
      */
-    public Collection<DataSource> dataSources = new LinkedList<DataSource>();
+    public final Collection<DataSource> dataSources = new LinkedList<DataSource>();
 
     /**
Index: trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 4725)
+++ trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 4726)
@@ -4,6 +4,6 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.io.IOException;
 import java.io.Reader;
-import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -15,4 +15,5 @@
 import java.util.Stack;
 
+import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
@@ -23,5 +24,4 @@
 
 import org.openstreetmap.josm.io.MirroredInputStream;
-
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
@@ -89,24 +89,4 @@
 
     public static final String lang = LanguageInfo.getLanguageCodeXML();
-    public static class Uniform<T> implements Iterable<T>{
-        private Iterator<Object> iterator;
-        /**
-         * @param klass This has to be specified since generics are erased from
-         * class files so the JVM cannot deduce T itself.
-         */
-        public Uniform(Reader input, String tagname, Class<T> klass) {
-            XmlObjectParser parser = new XmlObjectParser();
-            parser.map(tagname, klass);
-            parser.start(input);
-            iterator = parser.iterator();
-        }
-        public Iterator<T> iterator() {
-            return new Iterator<T>(){
-                public boolean hasNext() {return iterator.hasNext();}
-                @SuppressWarnings("unchecked") public T next() {return (T)iterator.next();}
-                public void remove() {iterator.remove();}
-            };
-        }
-    }
 
     private static class AddNamespaceFilter extends XMLFilterImpl {
@@ -204,5 +184,5 @@
                     {
                         String locfieldName = "locale_" +
-                        fieldName.substring(lang.length());
+                                fieldName.substring(lang.length());
                         try {
                             f = c.getClass().getField(locfieldName);
@@ -285,5 +265,5 @@
     }
 
-    private Iterable<Object> start(final Reader in, final ContentHandler contentHandler) {
+    private Iterable<Object> start(final Reader in, final ContentHandler contentHandler) throws SAXException, IOException {
         try {
             SAXParserFactory parserFactory = SAXParserFactory.newInstance();
@@ -293,13 +273,18 @@
             reader.setContentHandler(contentHandler);
             reader.parse(new InputSource(in));
-        } catch (Exception e) {
+            queueIterator = queue.iterator();
+            return this;
+        } catch (ParserConfigurationException e) {
+            // This should never happen ;-)
             throw new RuntimeException(e);
         }
-        queueIterator = queue.iterator();
-        return this;
-    }
-
-    public Iterable<Object> start(final Reader in) {
-        return start(in, parser);
+    }
+
+    public Iterable<Object> start(final Reader in) throws SAXException {
+        try {
+            return start(in, parser);
+        } catch (IOException e) {
+            throw new SAXException(e);
+        }
     }
 
