Index: trunk/src/org/openstreetmap/josm/tools/FilteredCollection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/FilteredCollection.java	(revision 10689)
+++ trunk/src/org/openstreetmap/josm/tools/FilteredCollection.java	(revision 10691)
@@ -3,4 +3,5 @@
 
 import java.util.Collection;
+import java.util.function.Predicate;
 
 /**
@@ -17,5 +18,5 @@
      * @param predicate The predicate to use as filter
      */
-    public FilteredCollection(Collection<? extends T> collection, java.util.function.Predicate<? super T> predicate) {
+    public FilteredCollection(Collection<? extends T> collection, Predicate<? super T> predicate) {
         super(collection, predicate);
     }
Index: trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 10689)
+++ trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 10691)
@@ -16,4 +16,5 @@
 import java.util.List;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.openstreetmap.josm.Main;
@@ -887,5 +888,5 @@
      * @return {@code true} if the node is inside the multipolygon
      */
-    public static boolean isNodeInsideMultiPolygon(Node node, Relation multiPolygon, java.util.function.Predicate<Way> isOuterWayAMatch) {
+    public static boolean isNodeInsideMultiPolygon(Node node, Relation multiPolygon, Predicate<Way> isOuterWayAMatch) {
         return isPolygonInsideMultiPolygon(Collections.singletonList(node), multiPolygon, isOuterWayAMatch);
     }
@@ -901,6 +902,5 @@
      * @return {@code true} if the polygon formed by nodes is inside the multipolygon
      */
-    public static boolean isPolygonInsideMultiPolygon(List<Node> nodes, Relation multiPolygon,
-            java.util.function.Predicate<Way> isOuterWayAMatch) {
+    public static boolean isPolygonInsideMultiPolygon(List<Node> nodes, Relation multiPolygon, Predicate<Way> isOuterWayAMatch) {
         // Extract outer/inner members from multipolygon
         final MultiPolygonMembers mpm = new MultiPolygonMembers(multiPolygon);
Index: trunk/src/org/openstreetmap/josm/tools/Predicate.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Predicate.java	(revision 10689)
+++ 	(revision )
@@ -1,26 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools;
-
-/**
- * Used to identify objects that fulfill a certain condition, e.g. when filtering a collection.
- *
- * @param <T> The objects type
- * @since 3177
- * @deprecated Use {@link java.util.function.Predicate} instead.
- */
-@Deprecated
-@FunctionalInterface
-public interface Predicate<T> extends java.util.function.Predicate<T> {
-
-    /**
-     * Determines whether the object passes the test or not
-     * @param object The object to evaluate
-     * @return {@code true} if the object passes the test, {@code false} otherwise
-     */
-    boolean evaluate(T object);
-
-    @Override
-    default boolean test(T t) {
-        return evaluate(t);
-    }
-}
Index: trunk/src/org/openstreetmap/josm/tools/Predicates.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Predicates.java	(revision 10689)
+++ trunk/src/org/openstreetmap/josm/tools/Predicates.java	(revision 10691)
@@ -4,4 +4,5 @@
 import java.util.Collection;
 import java.util.Objects;
+import java.util.function.Predicate;
 import java.util.regex.Pattern;
 
@@ -34,16 +35,4 @@
     public static <T> Predicate<T> alwaysFalse() {
         return o -> false;
-    }
-
-    /**
-     * Returns the negation of {@code predicate}.
-     * @param <T> type of items
-     * @param predicate the predicate to negate
-     * @return the negation of {@code predicate}
-     * @deprecated Use {@link java.util.function.Predicate#negate()}
-     */
-    @Deprecated
-    public static <T> Predicate<T> not(final Predicate<T> predicate) {
-        return obj -> !predicate.evaluate(obj);
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java	(revision 10689)
+++ trunk/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java	(revision 10691)
@@ -6,4 +6,5 @@
 import java.util.Iterator;
 import java.util.NoSuchElementException;
+import java.util.function.Predicate;
 
 /**
@@ -22,5 +23,5 @@
 
     private final Collection<? extends S> collection;
-    private final java.util.function.Predicate<? super S> predicate;
+    private final Predicate<? super S> predicate;
     private int size = -1;
 
@@ -72,18 +73,7 @@
      * @param collection The base collection to filter
      * @param predicate The predicate to use as filter
-     * @deprecated Use java predicates instead.
+     * @see #filter(Collection, Predicate) for an alternative way to construct this.
      */
-    @Deprecated
     public SubclassFilteredCollection(Collection<? extends S> collection, Predicate<? super S> predicate) {
-        this(collection, (java.util.function.Predicate<? super S>) predicate);
-    }
-
-    /**
-     * Constructs a new {@code SubclassFilteredCollection}.
-     * @param collection The base collection to filter
-     * @param predicate The predicate to use as filter
-     * @see #filter(Collection, java.util.function.Predicate) for an alternative way to construct this.
-     */
-    public SubclassFilteredCollection(Collection<? extends S> collection, java.util.function.Predicate<? super S> predicate) {
         this.collection = collection;
         this.predicate = predicate;
@@ -120,5 +110,5 @@
      * @return The filtered collection. It is a {@code Collection<T>}.
      */
-    public static <T> SubclassFilteredCollection<T, T> filter(Collection<? extends T> collection, java.util.function.Predicate<T> predicate) {
+    public static <T> SubclassFilteredCollection<T, T> filter(Collection<? extends T> collection, Predicate<T> predicate) {
         return new SubclassFilteredCollection<>(collection, predicate);
     }
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10689)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10691)
@@ -50,4 +50,5 @@
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -106,10 +107,10 @@
      * @param predicate the predicate
      * @return {@code true} if {@code predicate} applies to at least one element from {@code collection}
-     * @deprecated use {@link Stream#anyMatch(java.util.function.Predicate)} instead.
+     * @deprecated use {@link Stream#anyMatch(Predicate)} instead.
      */
     @Deprecated
     public static <T> boolean exists(Iterable<? extends T> collection, Predicate<? super T> predicate) {
         for (T item : collection) {
-            if (predicate.evaluate(item)) {
+            if (predicate.test(item)) {
                 return true;
             }
@@ -125,9 +126,9 @@
      * @param predicate the predicate
      * @return {@code true} if {@code predicate} applies to all elements from {@code collection}
-     * @deprecated use {@link Stream#allMatch(java.util.function.Predicate)} instead.
+     * @deprecated use {@link Stream#allMatch(Predicate)} instead.
      */
     @Deprecated
     public static <T> boolean forAll(Iterable<? extends T> collection, Predicate<? super T> predicate) {
-        return !exists(collection, Predicates.not(predicate));
+        return !exists(collection, predicate.negate());
     }
 
@@ -152,5 +153,5 @@
     public static <T> T find(Iterable<? extends T> collection, Predicate<? super T> predicate) {
         for (T item : collection) {
-            if (predicate.evaluate(item)) {
+            if (predicate.test(item)) {
                 return item;
             }
@@ -169,19 +170,4 @@
     public static <T> T find(Iterable<? extends Object> collection, Class<? extends T> clazz) {
         return (T) find(collection, Predicates.<Object>isInstanceOf(clazz));
-    }
-
-    /**
-     * Creates a new {@link FilteredCollection}.
-     * @param <T> The collection type.
-     * @param collection The collection to filter.
-     * @param predicate The predicate to filter for.
-     * @return The new {@link FilteredCollection}
-     * @deprecated Use java predicates and {@link SubclassFilteredCollection#filter(Collection, java.util.function.Predicate)} instead.
-     */
-    @Deprecated
-    @SuppressWarnings("unused")
-    public static <T> Collection<T> filter(Collection<? extends T> collection, Predicate<? super T> predicate) {
-        // Diamond operator does not work with Java 9 here
-        return new FilteredCollection<T>(collection, predicate);
     }
 
@@ -225,5 +211,5 @@
         int i = 0;
         for (T item : collection) {
-            if (predicate.evaluate(item))
+            if (predicate.test(item))
                 return i;
             i++;
@@ -758,25 +744,4 @@
     public static String escapeReservedCharactersHTML(String s) {
         return s == null ? "" : s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
-    }
-
-    /**
-     * Represents a function that can be applied to objects of {@code A} and
-     * returns objects of {@code B}.
-     * @param <A> class of input objects
-     * @param <B> class of transformed objects
-     *
-     * @deprecated Use java.util.function.Function instead.
-     */
-    @Deprecated
-    @FunctionalInterface
-    public interface Function<A, B> extends java.util.function.Function<A, B> {
-
-        /**
-         * Applies the function on {@code x}.
-         * @param x an object of
-         * @return the transformed object
-         */
-        @Override
-        B apply(A x);
     }
 
