Index: trunk/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java	(revision 10715)
@@ -12,5 +12,4 @@
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.function.Predicate;
 
 import org.openstreetmap.josm.data.osm.Node;
@@ -43,22 +42,4 @@
     private final CopyOnWriteArrayList<IConflictListener> listeners;
 
-    private static class FilterPredicate implements Predicate<Conflict<? extends OsmPrimitive>> {
-
-        private final Class<? extends OsmPrimitive> c;
-
-        FilterPredicate(Class<? extends OsmPrimitive> c) {
-            this.c = c;
-        }
-
-        @Override
-        public boolean test(Conflict<? extends OsmPrimitive> conflict) {
-            return conflict != null && c.isInstance(conflict.getMy());
-        }
-    }
-
-    private static final FilterPredicate NODE_FILTER_PREDICATE = new FilterPredicate(Node.class);
-    private static final FilterPredicate WAY_FILTER_PREDICATE = new FilterPredicate(Way.class);
-    private static final FilterPredicate RELATION_FILTER_PREDICATE = new FilterPredicate(Relation.class);
-
     /**
      * Constructs a new {@code ConflictCollection}.
@@ -364,5 +345,5 @@
      */
     public final Collection<Conflict<? extends OsmPrimitive>> getNodeConflicts() {
-        return SubclassFilteredCollection.filter(conflicts, NODE_FILTER_PREDICATE);
+        return SubclassFilteredCollection.filter(conflicts, c -> c != null && c.getMy() instanceof Node);
     }
 
@@ -373,5 +354,5 @@
      */
     public final Collection<Conflict<? extends OsmPrimitive>> getWayConflicts() {
-        return SubclassFilteredCollection.filter(conflicts, WAY_FILTER_PREDICATE);
+        return SubclassFilteredCollection.filter(conflicts, c -> c != null && c.getMy() instanceof Way);
     }
 
@@ -382,5 +363,5 @@
      */
     public final Collection<Conflict<? extends OsmPrimitive>> getRelationConflicts() {
-        return SubclassFilteredCollection.filter(conflicts, RELATION_FILTER_PREDICATE);
+        return SubclassFilteredCollection.filter(conflicts, c -> c != null && c.getMy() instanceof Relation);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 10715)
@@ -48,5 +48,4 @@
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.tools.FilteredCollection;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
@@ -458,5 +457,5 @@
      */
     public Collection<OsmPrimitive> allPrimitives() {
-        return getPrimitives(Predicates.alwaysTrue());
+        return getPrimitives(o -> true);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 10715)
@@ -28,5 +28,4 @@
 import org.openstreetmap.josm.gui.mappaint.StyleCache;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
@@ -234,15 +233,15 @@
      * A predicate filtering nodes.
      */
-    public static final Predicate<OsmPrimitive> nodePredicate = Predicates.<OsmPrimitive>isOfClass(Node.class);
+    public static final Predicate<OsmPrimitive> nodePredicate = Node.class::isInstance;
 
     /**
      * A predicate filtering ways.
      */
-    public static final Predicate<OsmPrimitive> wayPredicate = Predicates.<OsmPrimitive>isOfClass(Way.class);
+    public static final Predicate<OsmPrimitive> wayPredicate = Way.class::isInstance;
 
     /**
      * A predicate filtering relations.
      */
-    public static final Predicate<OsmPrimitive> relationPredicate = Predicates.<OsmPrimitive>isOfClass(Relation.class);
+    public static final Predicate<OsmPrimitive> relationPredicate = Relation.class::isInstance;
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 10715)
@@ -19,5 +19,4 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.tools.LanguageInfo;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
@@ -166,5 +165,5 @@
         final List<TestError> errors = new ArrayList<>();
         for (final String key : SubclassFilteredCollection.filter(p.keySet(),
-                Predicates.stringMatchesPattern(Pattern.compile(".*:conditional(:.*)?$")))) {
+                Pattern.compile(":conditional(:.*)?$").asPredicate())) {
             if (!isKeyValid(key)) {
                 errors.add(new TestError(this, Severity.WARNING, tr("Wrong syntax in {0} key", key), 3201, p));
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 10715)
@@ -28,5 +28,4 @@
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.Predicates;
 
 /**
@@ -156,5 +155,5 @@
                 boolean ignore = false;
                 for (String ignoredKey : IGNORED_KEYS.get()) {
-                    if (error.getPrimitives().stream().anyMatch(Predicates.hasKey(ignoredKey))) {
+                    if (error.getPrimitives().stream().anyMatch(p -> p.hasKey(ignoredKey))) {
                         ignore = true;
                         break;
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java	(revision 10715)
@@ -15,5 +15,4 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.gui.mappaint.ElemStyles;
-import org.openstreetmap.josm.tools.Predicates;
 
 /**
@@ -67,5 +66,5 @@
         if (wayNode.isOutsideDownloadArea()) {
             return;
-        } else if (wayNode.getReferrers().stream().anyMatch(Predicates.hasTag("route", "ferry"))) {
+        } else if (wayNode.getReferrers().stream().anyMatch(p1 -> p1.hasTag("route", "ferry"))) {
             return;
         } else if (isArea(p)) {
Index: trunk/src/org/openstreetmap/josm/gui/SplashScreen.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 10715)
@@ -38,5 +38,4 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WindowGeometry;
@@ -276,5 +275,5 @@
          */
         public void finishTask(String title) {
-            final Task task = Utils.find(tasks, Predicates.<Task>equalTo(new MeasurableTask(title)));
+            final Task task = Utils.find(tasks, new MeasurableTask(title)::equals);
             if (task instanceof MeasurableTask) {
                 ((MeasurableTask) task).finish();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 10715)
@@ -105,5 +105,4 @@
 import org.openstreetmap.josm.tools.LanguageInfo;
 import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
@@ -896,5 +895,5 @@
                 positionString = Utils.getPositionListString(position);
                 // if not all objects from the selection are member of this relation
-                if (selection.stream().anyMatch(Predicates.inCollection(members).negate())) {
+                if (selection.stream().anyMatch(p -> !members.contains(p))) {
                     positionString += ",\u2717";
                 }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 10715)
@@ -37,5 +37,4 @@
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Predicates;
 
 /**
@@ -347,5 +346,5 @@
     public void selectRelatedErrors(final Collection<OsmPrimitive> primitives) {
         final Collection<TreePath> paths = new ArrayList<>();
-        walkAndSelectRelatedErrors(new TreePath(getRoot()), Predicates.inCollection(new HashSet<>(primitives)), paths);
+        walkAndSelectRelatedErrors(new TreePath(getRoot()), new HashSet<>(primitives)::contains, paths);
         getSelectionModel().clearSelection();
         for (TreePath path : paths) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/LayerPositionStrategy.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/LayerPositionStrategy.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/layer/LayerPositionStrategy.java	(revision 10715)
@@ -3,7 +3,6 @@
 
 import java.util.List;
+import java.util.Objects;
 import java.util.function.Predicate;
-
-import org.openstreetmap.josm.tools.Predicates;
 
 /**
@@ -46,5 +45,5 @@
      */
     static LayerPositionStrategy inFrontOf(Layer other) {
-        return inFrontOfFirst(Predicates.equalTo(other));
+        return inFrontOfFirst(obj -> Objects.equals(obj, other));
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 10715)
@@ -28,5 +28,4 @@
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -513,5 +512,5 @@
             this.matchType = matchType == null ? KeyMatchType.EQ : matchType;
             this.containsPattern = KeyMatchType.REGEX.equals(matchType)
-                    ? Predicates.stringContainsPattern(Pattern.compile(label))
+                    ? Pattern.compile(label).asPredicate()
                     : null;
         }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 10715)
@@ -16,4 +16,5 @@
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.TreeSet;
 import java.util.function.Function;
@@ -37,5 +38,4 @@
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.Geometry;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
@@ -1135,5 +1135,5 @@
         public Float aggregateList(List<?> lst) {
             final List<Float> floats = Utils.transform(lst, (Function<Object, Float>) x -> Cascade.convertTo(x, float.class));
-            final Collection<Float> nonNullList = SubclassFilteredCollection.filter(floats, Predicates.<Float>isNull().negate());
+            final Collection<Float> nonNullList = SubclassFilteredCollection.filter(floats, Objects::nonNull);
             return nonNullList.isEmpty() ? (Float) Float.NaN : computeMax ? Collections.max(nonNullList) : Collections.min(nonNullList);
         }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 10715)
@@ -24,5 +24,4 @@
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
@@ -322,5 +321,5 @@
                     }
                     final Collection<Relation> multipolygons = Utils.filteredCollection(SubclassFilteredCollection.filter(
-                            e.osm.getReferrers(), Predicates.hasTag("type", "multipolygon")), Relation.class);
+                            e.osm.getReferrers(), p -> p.hasTag("type", "multipolygon")), Relation.class);
                     final Relation multipolygon = multipolygons.iterator().next();
                     if (multipolygon == null) throw new NoSuchElementException();
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 10715)
@@ -43,5 +43,4 @@
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.XmlObjectParser;
 import org.xml.sax.SAXException;
@@ -226,5 +225,5 @@
                     if (all.contains(tp)) {
                         lastmenuOriginal = tp;
-                        tp = (TaggingPresetMenu) all.stream().filter(Predicates.equalTo(tp)).findFirst().get();
+                        tp = (TaggingPresetMenu) all.stream().filter(tp::equals).findFirst().get();
                         lastmenuOriginal.group = null;
                     } else {
Index: trunk/src/org/openstreetmap/josm/tools/Predicates.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Predicates.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/tools/Predicates.java	(revision 10715)
@@ -11,5 +11,7 @@
 /**
  * Utility class for creating {@link Predicate}s.
+ * @deprecated Use corresponding lambda expressions instead
  */
+@Deprecated
 public final class Predicates {
 
@@ -87,5 +89,5 @@
      */
     public static Predicate<String> stringContainsPattern(final Pattern pattern) {
-        return string -> pattern.matcher(string).find();
+        return pattern.asPredicate();
     }
 
@@ -134,5 +136,5 @@
      */
     public static <T> Predicate<T> isNull() {
-        return object -> object == null;
+        return Objects::isNull;
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10714)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10715)
@@ -142,5 +142,6 @@
      */
     public static <T> boolean exists(Iterable<T> collection, Class<? extends T> clazz) {
-        return exists(collection, Predicates.<T>isInstanceOf(clazz));
+        CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
+        return exists(collection, clazz::isInstance);
     }
 
@@ -170,5 +171,6 @@
     @SuppressWarnings("unchecked")
     public static <T> T find(Iterable<? extends Object> collection, Class<? extends T> clazz) {
-        return (T) find(collection, Predicates.<Object>isInstanceOf(clazz));
+        CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
+        return (T) find(collection, clazz::isInstance);
     }
 
@@ -199,5 +201,6 @@
      */
     public static <S, T extends S> SubclassFilteredCollection<S, T> filteredCollection(Collection<S> collection, final Class<T> clazz) {
-        return new SubclassFilteredCollection<>(collection, Predicates.<S>isInstanceOf(clazz));
+        CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
+        return new SubclassFilteredCollection<>(collection, clazz::isInstance);
     }
 
