Index: applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java
===================================================================
--- applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 32738)
+++ applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 32773)
@@ -8,21 +8,17 @@
 import java.awt.Graphics2D;
 import java.awt.Point;
-import java.awt.datatransfer.UnsupportedFlavorException;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.PasteTagsAction.TagPaster;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.command.AddCommand;
@@ -35,11 +31,9 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
-import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MapViewPaintable;
@@ -555,5 +549,5 @@
 
         for (LatLon p : pts) {
-            Node nd = Main.map.mapView.getNearestNode(line.getPoint(p), OsmPrimitive.isSelectablePredicate);
+            Node nd = Main.map.mapView.getNearestNode(line.getPoint(p), OsmPrimitive::isSelectable);
             // there may be a node with the same coords!
 
@@ -580,14 +574,5 @@
         if (ctrl) {
             // paste tags - from ctrl-shift-v
-            Set<OsmPrimitive> ts = new HashSet<>();
-            ts.add(w);
-            try {
-                PrimitiveTransferData data = (PrimitiveTransferData) ClipboardUtils.getClipboard().getData(PrimitiveTransferData.DATA_FLAVOR);
-                for (Tag t : new TagPaster(data.getDirectlyAdded(), ts).execute()) {
-                    w.put(t.getKey(), t.getValue());
-                }
-            } catch (UnsupportedFlavorException | IOException e) {
-                Main.error(e);
-            }
+            new OsmTransferHandler().pasteTags(Collections.singleton(w));
         }
         if (!settings.autoTags.isEmpty()) {
@@ -729,5 +714,5 @@
 
     private Node getNearestNode(Point point, double maxDist) {
-        Node nd = Main.map.mapView.getNearestNode(point, OsmPrimitive.isSelectablePredicate);
+        Node nd = Main.map.mapView.getNearestNode(point, OsmPrimitive::isSelectable);
         if (nd != null && line.getPoint(nd.getCoor()).distance(point) <= maxDist) return nd;
         else return null;
