Index: trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 14090)
+++ trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 14092)
@@ -179,5 +179,17 @@
      */
     public static Object getPrivateField(Object obj, String fieldName) throws ReflectiveOperationException {
-        Field f = obj.getClass().getDeclaredField(fieldName);
+        return getPrivateField(obj.getClass(), obj, fieldName);
+    }
+
+    /**
+     * Returns a private field value.
+     * @param cls object class
+     * @param obj object
+     * @param fieldName private field name
+     * @return private field value
+     * @throws ReflectiveOperationException if a reflection operation error occurs
+     */
+    public static Object getPrivateField(Class<?> cls, Object obj, String fieldName) throws ReflectiveOperationException {
+        Field f = cls.getDeclaredField(fieldName);
         AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
             f.setAccessible(true);
Index: trunk/test/unit/org/openstreetmap/josm/data/imagery/WMSEndpointTileSourceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/imagery/WMSEndpointTileSourceTest.java	(revision 14090)
+++ trunk/test/unit/org/openstreetmap/josm/data/imagery/WMSEndpointTileSourceTest.java	(revision 14092)
@@ -9,5 +9,4 @@
 import java.util.Arrays;
 
-import org.fest.util.Collections;
 import org.junit.Rule;
 import org.junit.Test;
@@ -122,5 +121,5 @@
         ImageryLayerInfo.instance.loadDefaults(true, null, false);
         ImageryInfo wmsImageryInfo = ImageryLayerInfo.instance.getDefaultLayers().get(0);
-        wmsImageryInfo.setDefaultLayers(Collections.list(new DefaultLayer(ImageryType.WMS_ENDPOINT, "historiske-ortofoto", "", "")));
+        wmsImageryInfo.setDefaultLayers(Arrays.asList(new DefaultLayer(ImageryType.WMS_ENDPOINT, "historiske-ortofoto", "", "")));
         WMSEndpointTileSource tileSource = new WMSEndpointTileSource(wmsImageryInfo, Main.getProjection());
         tileSource.initProjection(Projections.getProjectionByCode("EPSG:3857"));
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java	(revision 14090)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java	(revision 14092)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.osm;
+
+import static org.openstreetmap.josm.TestUtils.getPrivateField;
 
 import java.io.FileInputStream;
@@ -12,6 +14,4 @@
 import java.util.Random;
 
-import org.fest.reflect.core.Reflection;
-import org.fest.reflect.reference.TypeRef;
 import org.junit.Assert;
 import org.junit.Rule;
@@ -38,14 +38,14 @@
     public JOSMTestRules test = new JOSMTestRules();
 
-    private void removeAllTest(DataSet ds) {
+    @SuppressWarnings("unchecked")
+    private void removeAllTest(DataSet ds) throws ReflectiveOperationException {
         List<Node> allNodes = new ArrayList<>(ds.getNodes());
         List<Way> allWays = new ArrayList<>(ds.getWays());
         List<Relation> allRelations = new ArrayList<>(ds.getRelations());
 
-        QuadBucketPrimitiveStore<Node, Way, Relation> s = Reflection.field("store").ofType(
-                new TypeRef<QuadBucketPrimitiveStore<Node, Way, Relation>>() {}).in(ds).get();
-        QuadBuckets<Node> nodes = Reflection.field("nodes").ofType(new TypeRef<QuadBuckets<Node>>() {}).in(s).get();
-        QuadBuckets<Way> ways = Reflection.field("ways").ofType(new TypeRef<QuadBuckets<Way>>() {}).in(s).get();
-        Collection<Relation> relations = Reflection.field("relations").ofType(new TypeRef<Collection<Relation>>() {}).in(s).get();
+        QuadBucketPrimitiveStore<Node, Way, Relation> s = (QuadBucketPrimitiveStore<Node, Way, Relation>) getPrivateField(ds, "store");
+        QuadBuckets<Node> nodes = (QuadBuckets<Node>) getPrivateField(s, "nodes");
+        QuadBuckets<Way> ways = (QuadBuckets<Way>) getPrivateField(s, "ways");
+        Collection<Relation> relations = (Collection<Relation>) getPrivateField(s, "relations");
 
         int expectedCount = allNodes.size();
@@ -77,4 +77,8 @@
     }
 
+    /**
+     * Test that all primitives can be removed from the Quad Buckets.
+     * @throws Exception never
+     */
     @Test
     public void testRemove() throws Exception {
@@ -86,4 +90,8 @@
     }
 
+    /**
+     * Test that all primitives can be removed from the Quad Buckets, even if moved before.
+     * @throws Exception never
+     */
     @Test
     public void testMove() throws Exception {
Index: trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java	(revision 14090)
+++ trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java	(revision 14092)
@@ -2,6 +2,4 @@
 package org.openstreetmap.josm.gui.conflict.pair.nodes;
 
-import static org.fest.reflect.core.Reflection.field;
-import static org.fest.reflect.core.Reflection.method;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -11,4 +9,7 @@
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -20,6 +21,8 @@
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.conflict.pair.AbstractListMergeModel;
 import org.openstreetmap.josm.testutils.DatasetFactory;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -45,14 +48,28 @@
     @SuppressWarnings("unchecked")
     protected List<Node> inspectNodeList(NodeListMergeModel model, String name) {
-        return method("get" + name + "Entries")
-        .withReturnType(List.class)
-        .in(model)
-        .invoke();
+        try {
+            Method getNamedEntries = AbstractListMergeModel.class.getDeclaredMethod("get" + name + "Entries");
+            AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
+                getNamedEntries.setAccessible(true);
+                return null;
+            });
+            return (List<Node>) getNamedEntries.invoke(model);
+        } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     protected DefaultListSelectionModel inspectListSelectionModel(NodeListMergeModel model, String name) {
-        return field(name).ofType(DefaultListSelectionModel.class)
-        .in(model)
-        .get();
+        try {
+            return (DefaultListSelectionModel) TestUtils.getPrivateField(AbstractListMergeModel.class, model, name);
+        } catch (ReflectiveOperationException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    protected Set<PropertyChangeListener> getListeners(NodeListMergeModel model) throws ReflectiveOperationException {
+        return (Set<PropertyChangeListener>)
+                TestUtils.getPrivateField(AbstractListMergeModel.class, model, "listeners");
     }
 
@@ -644,19 +661,13 @@
     @SuppressWarnings("unchecked")
     @Test
-    public void testAddPropertyChangeListener() {
-        NodeListMergeModel model = new NodeListMergeModel();
-
-        PropertyChangeListener listener = new PropertyChangeListener() {
-
-            public void propertyChange(PropertyChangeEvent evt) {
-            }
+    public void testAddPropertyChangeListener() throws ReflectiveOperationException {
+        NodeListMergeModel model = new NodeListMergeModel();
+
+        PropertyChangeListener listener = evt -> {
         };
 
         model.addPropertyChangeListener(listener);
 
-        Set<PropertyChangeListener> listeners = field("listeners")
-        .ofType(Set.class)
-        .in(model)
-        .get();
+        Set<PropertyChangeListener> listeners = getListeners(model);
 
         assertEquals(1, listeners.size());
@@ -666,11 +677,8 @@
     @SuppressWarnings("unchecked")
     @Test
-    public void testRemovePropertyChangeListener() {
-        NodeListMergeModel model = new NodeListMergeModel();
-
-        PropertyChangeListener listener = new PropertyChangeListener() {
-
-            public void propertyChange(PropertyChangeEvent evt) {
-            }
+    public void testRemovePropertyChangeListener() throws ReflectiveOperationException {
+        NodeListMergeModel model = new NodeListMergeModel();
+
+        PropertyChangeListener listener = evt -> {
         };
 
@@ -678,8 +686,5 @@
         model.removePropertyChangeListener(listener);
 
-        Set<PropertyChangeListener> listeners = field("listeners")
-        .ofType(Set.class)
-        .in(model)
-        .get();
+        Set<PropertyChangeListener> listeners = getListeners(model);
 
         assertEquals(0, listeners.size());
Index: trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModelTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModelTest.java	(revision 14090)
+++ trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModelTest.java	(revision 14092)
@@ -2,9 +2,7 @@
 package org.openstreetmap.josm.gui.conflict.pair.tags;
 
-import static org.fest.reflect.core.Reflection.field;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
-import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.List;
@@ -13,4 +11,5 @@
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
@@ -32,17 +31,20 @@
     public JOSMTestRules test = new JOSMTestRules();
 
-    @Test
-    public void testAddPropertyChangeListener() {
-        TagMergeModel model = new TagMergeModel();
-        PropertyChangeListener listener = new PropertyChangeListener() {
-
-            public void propertyChange(PropertyChangeEvent evt) {
-            }
+    protected Set<PropertyChangeListener> getListeners(TagMergeModel model) throws ReflectiveOperationException {
+        return (Set<PropertyChangeListener>) TestUtils.getPrivateField(model, "listeners");
+    }
+
+    protected List<TagMergeItem> getTagMergeItems(TagMergeModel model) throws ReflectiveOperationException {
+        return (List<TagMergeItem>) TestUtils.getPrivateField(model, "tagMergeItems");
+    }
+
+    @Test
+    public void testAddPropertyChangeListener() throws ReflectiveOperationException {
+        TagMergeModel model = new TagMergeModel();
+        PropertyChangeListener listener = evt -> {
         };
         model.addPropertyChangeListener(listener);
 
-        Set<?> list = field("listeners").ofType(Set.class)
-        .in(model)
-        .get();
+        Set<?> list = getListeners(model);
 
         assertEquals(1, list.size());
@@ -51,18 +53,12 @@
 
     @Test
-    public void testRemovePropertyChangeListener() {
-        TagMergeModel model = new TagMergeModel();
-        PropertyChangeListener listener = new PropertyChangeListener() {
-
-            public void propertyChange(PropertyChangeEvent evt) {
-            }
+    public void testRemovePropertyChangeListener() throws ReflectiveOperationException {
+        TagMergeModel model = new TagMergeModel();
+        PropertyChangeListener listener = evt -> {
         };
         model.addPropertyChangeListener(listener);
         model.removePropertyChangeListener(listener);
 
-        Set<?> list = field("listeners")
-        .ofType(Set.class)
-        .in(model)
-        .get();
+        Set<?> list = getListeners(model);
 
         assertEquals(0, list.size());
@@ -70,14 +66,11 @@
 
     @Test
-    public void testPopulateNoConflichts() {
-        Node my = new Node(1);
-        Node their = new Node(1);
-        TagMergeModel model = new TagMergeModel();
-        model.populate(my, their);
-
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+    public void testPopulateNoConflichts() throws ReflectiveOperationException {
+        Node my = new Node(1);
+        Node their = new Node(1);
+        TagMergeModel model = new TagMergeModel();
+        model.populate(my, their);
+
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         assertEquals(0, list.size());
@@ -85,5 +78,5 @@
 
     @Test
-    public void testPopulateNoConflicts1() {
+    public void testPopulateNoConflicts1() throws ReflectiveOperationException {
         Node my = new Node(1);
         my.put("key", "value");
@@ -93,8 +86,5 @@
         model.populate(my, their);
 
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         assertEquals(0, list.size());
@@ -102,5 +92,5 @@
 
     @Test
-    public void testPopulateMissingKeyMine() {
+    public void testPopulateMissingKeyMine() throws ReflectiveOperationException {
         Node my = new Node(1);
         Node their = new Node(1);
@@ -109,8 +99,5 @@
         model.populate(my, their);
 
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         assertEquals(1, list.size());
@@ -123,5 +110,5 @@
 
     @Test
-    public void testPopulateMissingKeyTheir() {
+    public void testPopulateMissingKeyTheir() throws ReflectiveOperationException {
         Node my = new Node(1);
         my.put("key", "value");
@@ -130,8 +117,5 @@
         model.populate(my, their);
 
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         assertEquals(1, list.size());
@@ -144,5 +128,5 @@
 
     @Test
-    public void testPopulateConflictingValues() {
+    public void testPopulateConflictingValues() throws ReflectiveOperationException {
         Node my = new Node(1);
         my.put("key", "myvalue");
@@ -152,8 +136,5 @@
         model.populate(my, their);
 
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         assertEquals(1, list.size());
@@ -166,13 +147,10 @@
 
     @Test
-    public void testAddItem() {
+    public void testAddItem() throws ReflectiveOperationException {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         TagMergeModel model = new TagMergeModel();
         model.addItem(item);
 
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         assertEquals(1, list.size());
@@ -185,13 +163,10 @@
 
     @Test
-    public void testDecide() {
+    public void testDecide() throws ReflectiveOperationException {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         TagMergeModel model = new TagMergeModel();
         model.addItem(item);
 
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         model.decide(0, MergeDecisionType.KEEP_MINE);
@@ -212,5 +187,5 @@
 
     @Test
-    public void testDecideMultiple() {
+    public void testDecideMultiple() throws ReflectiveOperationException {
 
         TagMergeModel model = new TagMergeModel();
@@ -219,8 +194,5 @@
         }
 
-        List<TagMergeItem> list = field("tagMergeItems")
-        .ofType(List.class)
-        .in(model)
-        .get();
+        List<TagMergeItem> list = getTagMergeItems(model);
 
         assertEquals(10, list.size());
