Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 11809)
@@ -231,20 +231,18 @@
 
     private BoundingXYVisitor getBoundingBox() {
-        BoundingXYVisitor v = "problem".equals(mode) ? new ValidatorBoundingXYVisitor() : new BoundingXYVisitor();
-
         switch (mode) {
         case "problem":
-            return modeProblem((ValidatorBoundingXYVisitor) v);
+            return modeProblem(new ValidatorBoundingXYVisitor());
         case "data":
-            return modeData(v);
+            return modeData(new BoundingXYVisitor());
         case "layer":
-            return modeLayer(v);
+            return modeLayer(new BoundingXYVisitor());
         case "selection":
         case "conflict":
-            return modeSelectionOrConflict(v);
+            return modeSelectionOrConflict(new BoundingXYVisitor());
         case "download":
-            return modeDownload(v);
+            return modeDownload(new BoundingXYVisitor());
         default:
-            return v;
+            return new BoundingXYVisitor();
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java	(revision 11809)
@@ -33,14 +33,15 @@
     @Override
     public int getSourceActions(JComponent c) {
-        // we know that the source is a layer list, so don't check c.
-        LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
-        if (tableModel.getSelectedLayers().isEmpty()) {
-            return 0;
+        if (c instanceof JTable) {
+            LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
+            if (!tableModel.getSelectedLayers().isEmpty()) {
+                int actions = MOVE;
+                if (onlyDataLayersSelected(tableModel)) {
+                    actions |= COPY;
+                }
+                return actions /* soon: | LINK*/;
+            }
         }
-        int actions = MOVE;
-        if (onlyDataLayersSelected(tableModel)) {
-            actions |= COPY;
-        }
-        return actions /* soon: | LINK*/;
+        return NONE;
     }
 
@@ -56,6 +57,9 @@
     @Override
     protected Transferable createTransferable(JComponent c) {
-        LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
-        return new LayerTransferable(tableModel.getLayerManager(), tableModel.getSelectedLayers());
+        if (c instanceof JTable) {
+            LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
+            return new LayerTransferable(tableModel.getLayerManager(), tableModel.getSelectedLayers());
+        }
+        return null;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java	(revision 11809)
@@ -70,5 +70,4 @@
     public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
             boolean selected, boolean outermember, boolean member) {
-        Way w = (Way) primitive;
         /* show direction arrows, if draw.segment.relevant_directions_only is not set,
         the way is tagged with a direction key
@@ -82,6 +81,6 @@
         boolean showOneway = !isModifier && !selected &&
                 !paintSettings.isUseRealWidth() &&
-                paintSettings.isShowOnewayArrow() && w.hasDirectionKeys();
-        boolean onewayReversed = w.reversedDirection();
+                paintSettings.isShowOnewayArrow() && primitive.hasDirectionKeys();
+        boolean onewayReversed = primitive.reversedDirection();
         /* head only takes over control if the option is true,
         the direction should be shown at all and not only because it's selected */
@@ -109,22 +108,25 @@
         } else if (member || outermember) {
             myColor = paintSettings.getRelationSelectedColor(color.getAlpha());
-        } else if (w.isDisabled()) {
+        } else if (primitive.isDisabled()) {
             myColor = paintSettings.getInactiveColor();
             myDashedColor = paintSettings.getInactiveColor();
         }
 
-        painter.drawWay(w, myColor, myLine, myDashLine, myDashedColor, offset, showOrientation,
-                showOnlyHeadArrowOnly, showOneway, onewayReversed);
-
-        if ((paintSettings.isShowOrderNumber() || (paintSettings.isShowOrderNumberOnSelectedWay() && selected))
-                && !painter.isInactiveMode()) {
-            int orderNumber = 0;
-            lastN = null;
-            for (Node n : w.getNodes()) {
-                if (lastN != null) {
-                    orderNumber++;
-                    painter.drawOrderNumber(lastN, n, orderNumber, myColor);
-                }
-                lastN = n;
+        if (primitive instanceof Way) {
+            Way w = (Way) primitive;
+            painter.drawWay(w, myColor, myLine, myDashLine, myDashedColor, offset, showOrientation,
+                    showOnlyHeadArrowOnly, showOneway, onewayReversed);
+
+            if ((paintSettings.isShowOrderNumber() || (paintSettings.isShowOrderNumberOnSelectedWay() && selected))
+                    && !painter.isInactiveMode()) {
+                int orderNumber = 0;
+                lastN = null;
+                for (Node n : w.getNodes()) {
+                    if (lastN != null) {
+                        orderNumber++;
+                        painter.drawOrderNumber(lastN, n, orderNumber, myColor);
+                    }
+                    lastN = n;
+                }
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java	(revision 11809)
@@ -81,6 +81,8 @@
     public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
             boolean selected, boolean outermember, boolean member) {
-        Way w = (Way) primitive;
-        painter.drawRepeatImage(w, pattern, painter.isInactiveMode() || w.isDisabled(), offset, spacing, phase, align);
+        if (primitive instanceof Way) {
+            Way w = (Way) primitive;
+            painter.drawRepeatImage(w, pattern, painter.isInactiveMode() || w.isDisabled(), offset, spacing, phase, align);
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 11809)
@@ -151,5 +151,8 @@
             // Taken from http://stackoverflow.com/a/24571681/2257172
             int h = getHeight();
-            ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            if (g instanceof Graphics2D) {
+                ((Graphics2D) g).setRenderingHint(
+                        RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            }
             Insets ins = getInsets();
             FontMetrics fm = g.getFontMetrics();
Index: trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 11809)
@@ -158,5 +158,5 @@
         @Override
         public void paint(Graphics g, Divider divider) {
-            if ((divider == activeDivider()) && !isContinuousLayout()) {
+            if (g instanceof Graphics2D && divider == activeDivider() && !isContinuousLayout()) {
                 Graphics2D g2d = (Graphics2D) g;
                 g2d.setColor(Color.black);
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 11809)
@@ -211,11 +211,10 @@
      */
     public MultiFetchServerObjectReader append(OsmPrimitive primitive) {
-        if (primitive != null) {
-            switch (OsmPrimitiveType.from(primitive)) {
-                case NODE: return appendNode((Node) primitive);
-                case WAY: return appendWay((Way) primitive);
-                case RELATION: return appendRelation((Relation) primitive);
-                default: break;
-            }
+        if (primitive instanceof Node) {
+            return appendNode((Node) primitive);
+        } else if (primitive instanceof Way) {
+            return appendWay((Way) primitive);
+        } else if (primitive instanceof Relation) {
+            return appendRelation((Relation) primitive);
         }
         return this;
Index: trunk/src/org/openstreetmap/josm/io/OsmExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 11809)
@@ -64,13 +64,9 @@
      */
     public void exportData(File file, Layer layer, boolean noBackup) {
-        checkOsmDataLayer(layer);
+        if (!(layer instanceof OsmDataLayer)) {
+            throw new IllegalArgumentException(
+                    MessageFormat.format("Expected instance of OsmDataLayer. Got ''{0}''.", layer.getClass().getName()));
+        }
         save(file, (OsmDataLayer) layer, noBackup);
-    }
-
-    protected static void checkOsmDataLayer(Layer layer) {
-        if (!(layer instanceof OsmDataLayer)) {
-            throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer. Got ''{0}''.", layer
-                    .getClass().getName()));
-        }
     }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/DNSName.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/DNSName.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/DNSName.java	(revision 11809)
@@ -203,4 +203,7 @@
             constraintType = NAME_DIFF_TYPE;
         else {
+            if (!(inputName instanceof DNSName)) {
+                throw new IllegalArgumentException("inputName: " + inputName);
+            }
             String inName =
                 (((DNSName) inputName).getName()).toLowerCase(Locale.ENGLISH);
Index: trunk/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java	(revision 11808)
+++ trunk/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java	(revision 11809)
@@ -23,5 +23,5 @@
 public class ContextSwitchTemplate implements TemplateEntry {
 
-    private static final TemplateEngineDataProvider EMTPY_PROVIDER = new TemplateEngineDataProvider() {
+    private static final TemplateEngineDataProvider EMPTY_PROVIDER = new TemplateEngineDataProvider() {
         @Override
         public Object getTemplateValue(String name, boolean special) {
@@ -258,20 +258,22 @@
     @Override
     public void appendText(StringBuilder result, TemplateEngineDataProvider dataProvider) {
-        List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
-        if (primitives != null && !primitives.isEmpty()) {
-            template.appendText(result, primitives.get(0));
-        } else {
-            template.appendText(result, EMTPY_PROVIDER);
-        }
+        if (dataProvider instanceof OsmPrimitive) {
+            List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
+            if (primitives != null && !primitives.isEmpty()) {
+                template.appendText(result, primitives.get(0));
+            }
+        }
+        template.appendText(result, EMPTY_PROVIDER);
     }
 
     @Override
     public boolean isValid(TemplateEngineDataProvider dataProvider) {
-        List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
-        if (primitives != null && !primitives.isEmpty())
-            return template.isValid(primitives.get(0));
-        else
-            return false;
-    }
-
+        if (dataProvider instanceof OsmPrimitive) {
+            List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
+            if (primitives != null && !primitives.isEmpty()) {
+                return template.isValid(primitives.get(0));
+            }
+        }
+        return false;
+    }
 }
