http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java 
b/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java
index 5574552..dccb426 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/NamedFactory.java
@@ -18,9 +18,9 @@
  */
 package org.apache.sshd.common;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.apache.sshd.common.util.Transformer;
 
@@ -36,6 +36,7 @@ public interface NamedFactory<T> extends Factory<T>, 
NamedResource {
      * Utility class to help using NamedFactories
      */
     // CHECKSTYLE:OFF
+    @Deprecated
     final class Utils {
     // CHECKSTYLE:ON
 
@@ -43,45 +44,51 @@ public interface NamedFactory<T> extends Factory<T>, 
NamedResource {
             throw new UnsupportedOperationException("No instance allowed");
         }
 
-        /**
-         * Create an instance of the specified name by looking up the needed 
factory
-         * in the list.
-         *
-         * @param factories list of available factories
-         * @param name      the factory name to use
-         * @param <T>       type of object to create
-         * @return a newly created object or {@code null} if the factory is 
not in the list
-         */
         public static <T> T create(Collection<? extends NamedFactory<T>> 
factories, String name) {
-            NamedFactory<? extends T> f = NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, factories);
-            if (f != null) {
-                return f.create();
-            } else {
-                return null;
-            }
+            return NamedFactory.create(factories, name);
         }
 
         public static <S extends OptionalFeature, T, E extends 
NamedFactory<T>> List<NamedFactory<T>> setUpTransformedFactories(
                 boolean ignoreUnsupported, Collection<? extends S> preferred, 
Transformer<? super S, ? extends E> xform) {
-            List<NamedFactory<T>> avail = new ArrayList<>(preferred.size());
-            for (S f : preferred) {
-                if (ignoreUnsupported || f.isSupported()) {
-                    avail.add(xform.transform(f));
-                }
-            }
-            return avail;
+            return NamedFactory.setUpTransformedFactories(ignoreUnsupported, 
preferred, xform);
         }
 
         public static <T, E extends NamedFactory<T> & OptionalFeature> 
List<NamedFactory<T>> setUpBuiltinFactories(
                 boolean ignoreUnsupported, Collection<? extends E> preferred) {
-            List<NamedFactory<T>> avail = new ArrayList<>(preferred.size());
-            for (E f : preferred) {
-                if (ignoreUnsupported || f.isSupported()) {
-                    avail.add(f);
-                }
-            }
+            return NamedFactory.setUpBuiltinFactories(ignoreUnsupported, 
preferred);
+        }
+    }
 
-            return avail;
+    /**
+     * Create an instance of the specified name by looking up the needed 
factory
+     * in the list.
+     *
+     * @param factories list of available factories
+     * @param name      the factory name to use
+     * @param <T>       type of object to create
+     * @return a newly created object or {@code null} if the factory is not in 
the list
+     */
+    static <T> T create(Collection<? extends NamedFactory<T>> factories, 
String name) {
+        NamedFactory<? extends T> f = NamedResource.findByName(name, 
String.CASE_INSENSITIVE_ORDER, factories);
+        if (f != null) {
+            return f.create();
+        } else {
+            return null;
         }
     }
+
+    static <S extends OptionalFeature, T, E extends NamedFactory<T>> 
List<NamedFactory<T>> setUpTransformedFactories(
+            boolean ignoreUnsupported, Collection<? extends S> preferred, 
Transformer<? super S, ? extends E> xform) {
+        return preferred.stream()
+                .filter(f -> ignoreUnsupported || f.isSupported())
+                .map(xform::transform)
+                .collect(Collectors.toList());
+    }
+
+    static <T, E extends NamedFactory<T> & OptionalFeature> 
List<NamedFactory<T>> setUpBuiltinFactories(
+            boolean ignoreUnsupported, Collection<? extends E> preferred) {
+        return preferred.stream()
+                .filter(f -> ignoreUnsupported || f.isSupported())
+                .collect(Collectors.toList());
+    }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java 
b/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java
index 87b1e63..6aab4409 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/NamedResource.java
@@ -19,9 +19,7 @@
 
 package org.apache.sshd.common;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
@@ -35,31 +33,15 @@ import org.apache.sshd.common.util.Transformer;
 public interface NamedResource {
 
     /**
-     * Compares 2 {@link NamedResource}s according to their {@link #getName()}
-     * value case <U>insensitive</U>
+     * Returns the value of {@link #getName()} - or {@code null} if argument 
is {@code null}
      */
-    Comparator<NamedResource> BY_NAME_COMPARATOR = new 
Comparator<NamedResource>() {
-        @Override
-        public int compare(NamedResource r1, NamedResource r2) {
-            String n1 = r1.getName();
-            String n2 = r2.getName();
-            return String.CASE_INSENSITIVE_ORDER.compare(n1, n2);
-        }
-    };
+    Transformer<NamedResource, String> NAME_EXTRACTOR = input -> input == null 
? null : input.getName();
 
     /**
-     * Returns the value of {@link #getName()} - or {@code null} if argument 
is {@code null}
+     * Compares 2 {@link NamedResource}s according to their {@link #getName()}
+     * value case <U>insensitive</U>
      */
-    Transformer<NamedResource, String> NAME_EXTRACTOR = new 
Transformer<NamedResource, String>() {
-        @Override
-        public String transform(NamedResource input) {
-            if (input == null) {
-                return null;
-            } else {
-                return input.getName();
-            }
-        }
-    };
+    Comparator<NamedResource> BY_NAME_COMPARATOR = 
Comparator.comparing(NAME_EXTRACTOR, String.CASE_INSENSITIVE_ORDER);
 
     /**
      * @return The resource name
@@ -70,6 +52,7 @@ public interface NamedResource {
      * Utility class to help using {@link NamedResource}s
      */
     // CHECKSTYLE:OFF
+    @Deprecated
     final class Utils {
     // CHECKSTYLE:ON
 
@@ -77,74 +60,73 @@ public interface NamedResource {
             throw new UnsupportedOperationException("No instance allowed");
         }
 
-        /**
-         * @param resources The named resources
-         * @return A {@link List} of all the factories names - in same order
-         * as they appear in the input collection
-         */
         public static List<String> getNameList(Collection<? extends 
NamedResource> resources) {
-            if (GenericUtils.isEmpty(resources)) {
-                return Collections.emptyList();
-            }
-
-            List<String> names = new ArrayList<>(resources.size());
-            for (NamedResource r : resources) {
-                names.add(r.getName());
-            }
-
-            return names;
+            return NamedResource.getNameList(resources);
         }
 
-        /**
-         * @param resources list of available resources
-         * @return A comma separated list of factory names
-         */
         public static String getNames(Collection<? extends NamedResource> 
resources) {
-            return GenericUtils.join(getNameList(resources), ',');
+            return NamedResource.getNames(resources);
         }
 
-        /**
-         * Remove the resource identified by the name from the list.
-         *
-         * @param <R>       The generic resource type
-         * @param name      Name of the resource - ignored if {@code 
null}/empty
-         * @param c         The {@link Comparator} to decide whether the 
{@link NamedResource#getName()}
-         *                  matches the <tt>name</tt> parameter
-         * @param resources The {@link NamedResource} to check - ignored if 
{@code null}/empty
-         * @return the removed resource from the list or {@code null} if not 
in the list
-         */
         public static <R extends NamedResource> R removeByName(String name, 
Comparator<? super String> c, Collection<? extends R> resources) {
-            R r = findByName(name, c, resources);
-            if (r != null) {
-                resources.remove(r);
-            }
-
-            return r;
+            return NamedResource.removeByName(name, c, resources);
         }
 
-        /**
-         * @param <R>       The generic resource type
-         * @param name      Name of the resource - ignored if {@code 
null}/empty
-         * @param c         The {@link Comparator} to decide whether the 
{@link NamedResource#getName()}
-         *                  matches the <tt>name</tt> parameter
-         * @param resources The {@link NamedResource} to check - ignored if 
{@code null}/empty
-         * @return The <U>first</U> resource whose name matches the parameter 
(by invoking
-         * {@link Comparator#compare(Object, Object)} - {@code null} if no 
match found
-         */
         public static <R extends NamedResource> R findByName(String name, 
Comparator<? super String> c, Collection<? extends R> resources) {
-            if (GenericUtils.isEmpty(name) || GenericUtils.isEmpty(resources)) 
{
-                return null;
-            }
-
-            for (R r : resources) {
-                String n = r.getName();
-                int nRes = c.compare(name, n);
-                if (nRes == 0) {
-                    return r;
-                }
-            }
-
-            return null;
+            return NamedResource.findByName(name, c, resources);
+        }
+    }
+
+    /**
+     * @param resources The named resources
+     * @return A {@link List} of all the factories names - in same order
+     * as they appear in the input collection
+     */
+    static List<String> getNameList(Collection<? extends NamedResource> 
resources) {
+        return GenericUtils.map(resources, NamedResource::getName);
+    }
+
+    /**
+     * @param resources list of available resources
+     * @return A comma separated list of factory names
+     */
+    static String getNames(Collection<? extends NamedResource> resources) {
+        return GenericUtils.join(getNameList(resources), ',');
+    }
+
+    /**
+     * Remove the resource identified by the name from the list.
+     *
+     * @param <R>       The generic resource type
+     * @param name      Name of the resource - ignored if {@code null}/empty
+     * @param c         The {@link Comparator} to decide whether the {@link 
NamedResource#getName()}
+     *                  matches the <tt>name</tt> parameter
+     * @param resources The {@link NamedResource} to check - ignored if {@code 
null}/empty
+     * @return the removed resource from the list or {@code null} if not in 
the list
+     */
+    static <R extends NamedResource> R removeByName(String name, Comparator<? 
super String> c, Collection<? extends R> resources) {
+        R r = findByName(name, c, resources);
+        if (r != null) {
+            resources.remove(r);
         }
+        return r;
+    }
+
+    /**
+     * @param <R>       The generic resource type
+     * @param name      Name of the resource - ignored if {@code null}/empty
+     * @param c         The {@link Comparator} to decide whether the {@link 
NamedResource#getName()}
+     *                  matches the <tt>name</tt> parameter
+     * @param resources The {@link NamedResource} to check - ignored if {@code 
null}/empty
+     * @return The <U>first</U> resource whose name matches the parameter (by 
invoking
+     * {@link Comparator#compare(Object, Object)} - {@code null} if no match 
found
+     */
+    static <R extends NamedResource> R findByName(String name, Comparator<? 
super String> c, Collection<? extends R> resources) {
+        return GenericUtils.isEmpty(name)
+            ? null
+            : GenericUtils.stream(resources)
+                .filter(r -> c.compare(name, r.getName()) == 0)
+                .findFirst()
+                .orElse(null);
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java 
b/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java
index 54ec1b4..6bc6eac 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/OptionalFeature.java
@@ -58,6 +58,7 @@ public interface OptionalFeature {
      * Utility class to help using {@link OptionalFeature}s
      */
     // CHECKSTYLE:OFF
+    @Deprecated
     final class Utils {
     // CHECKSTYLE:ON
 
@@ -66,45 +67,51 @@ public interface OptionalFeature {
         }
 
         public static OptionalFeature of(boolean supported) {
-            return supported ? TRUE : FALSE;
+            return OptionalFeature.of(supported);
         }
 
         public static OptionalFeature all(final Collection<? extends 
OptionalFeature> features) {
-            return new OptionalFeature() {
-                @Override
-                public boolean isSupported() {
-                    if (GenericUtils.isEmpty(features)) {
-                        return false;
-                    }
-
-                    for (OptionalFeature f : features) {
-                        if (!f.isSupported()) {
-                            return false;
-                        }
-                    }
-
-                    return true;
-                }
-            };
+            return OptionalFeature.all(features);
         }
 
         public static OptionalFeature any(final Collection<? extends 
OptionalFeature> features) {
-            return new OptionalFeature() {
-                @Override
-                public boolean isSupported() {
-                    if (GenericUtils.isEmpty(features)) {
-                        return false;
-                    }
-
-                    for (OptionalFeature f : features) {
-                        if (f.isSupported()) {
-                            return true;
-                        }
-                    }
+            return OptionalFeature.any(features);
+        }
+    }
 
+    static OptionalFeature of(boolean supported) {
+        return supported ? TRUE : FALSE;
+    }
+
+    static OptionalFeature all(final Collection<? extends OptionalFeature> 
features) {
+        return () -> {
+            if (GenericUtils.isEmpty(features)) {
+                return false;
+            }
+
+            for (OptionalFeature f : features) {
+                if (!f.isSupported()) {
                     return false;
                 }
-            };
-        }
+            }
+
+            return true;
+        };
+    }
+
+    static OptionalFeature any(final Collection<? extends OptionalFeature> 
features) {
+        return () -> {
+            if (GenericUtils.isEmpty(features)) {
+                return false;
+            }
+
+            for (OptionalFeature f : features) {
+                if (f.isSupported()) {
+                    return true;
+                }
+            }
+
+            return false;
+        };
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java 
b/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java
index bd08a52..2335074 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/ServiceFactory.java
@@ -30,6 +30,7 @@ public interface ServiceFactory extends NamedResource {
      * Utility class to help using NamedFactories
      */
     // CHECKSTYLE:OFF
+    @Deprecated
     final class Utils {
     // CHECKSTYLE:ON
 
@@ -37,24 +38,28 @@ public interface ServiceFactory extends NamedResource {
             throw new UnsupportedOperationException("No instance allowed");
         }
 
-        /**
-         * Create an instance of the specified name by looking up the needed 
factory
-         * in the list (case <U>insensitive</U>.
-         *
-         * @param factories list of available factories
-         * @param name      the factory name to use
-         * @param session   the referenced {@link Session}
-         * @return a newly created object or {@code null} if the factory is 
not in the list
-         * @throws IOException if session creation failed
-         * @see ServiceFactory#create(Session)
-         */
         public static Service create(Collection<? extends ServiceFactory> 
factories, String name, Session session) throws IOException {
-            ServiceFactory factory = NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, factories);
-            if (factory == null) {
-                return null;
-            } else {
-                return factory.create(session);
-            }
+            return ServiceFactory.create(factories, name, session);
+        }
+    }
+
+    /**
+     * Create an instance of the specified name by looking up the needed 
factory
+     * in the list (case <U>insensitive</U>.
+     *
+     * @param factories list of available factories
+     * @param name      the factory name to use
+     * @param session   the referenced {@link Session}
+     * @return a newly created object or {@code null} if the factory is not in 
the list
+     * @throws IOException if session creation failed
+     * @see ServiceFactory#create(Session)
+     */
+    static Service create(Collection<? extends ServiceFactory> factories, 
String name, Session session) throws IOException {
+        ServiceFactory factory = NamedResource.findByName(name, 
String.CASE_INSENSITIVE_ORDER, factories);
+        if (factory == null) {
+            return null;
+        } else {
+            return factory.create(session);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java 
b/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
index 4ceb0c3..35205c1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
@@ -18,12 +18,10 @@
  */
 package org.apache.sshd.common;
 
-import java.lang.reflect.Field;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Predicate;
 
 import org.apache.sshd.common.util.GenericUtils;
 import org.apache.sshd.common.util.logging.LoggingUtils;
@@ -153,19 +151,16 @@ public final class SshConstants {
 
     private static class LazyMessagesMapHolder {
         private static final Map<Integer, String> MESSAGES_MAP =
-                LoggingUtils.generateMnemonicMap(SshConstants.class, new 
Predicate<Field>() {
-                    @Override
-                    public boolean test(Field f) {
-                        String name = f.getName();
-                        if (!name.startsWith("SSH_MSG_")) {
-                            return false;
-                        }
-
-                        try {
-                            return !isAmbiguousOpcode(f.getByte(null));
-                        } catch (Exception e) {
-                            return false;
-                        }
+                LoggingUtils.generateMnemonicMap(SshConstants.class, f -> {
+                    String name = f.getName();
+                    if (!name.startsWith("SSH_MSG_")) {
+                        return false;
+                    }
+
+                    try {
+                        return !isAmbiguousOpcode(f.getByte(null));
+                    } catch (Exception e) {
+                        return false;
                     }
                 });
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java 
b/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java
index 757f709..6dcb615 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/SyspropsMapWrapper.java
@@ -19,14 +19,13 @@
 
 package org.apache.sshd.common;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Properties;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.stream.Collectors;
 
 import org.apache.sshd.common.util.GenericUtils;
 import org.apache.sshd.common.util.Pair;
@@ -134,16 +133,12 @@ public final class SyspropsMapWrapper implements 
Map<String, Object> {
 
     @Override
     public Set<String> keySet() {
-        Properties props = System.getProperties();
-        Set<String> keys = new TreeSet<>();
-        // filter out any non-SSHD properties
-        for (String key : props.stringPropertyNames()) {
-            if (isMappedSyspropKey(key)) {
-                keys.add(getUnmappedSyspropKey(key));
-            }
-        }
-
-        return keys;
+        return System.getProperties()
+                .stringPropertyNames().stream()
+                // filter out any non-SSHD properties
+                .filter(SyspropsMapWrapper::isMappedSyspropKey)
+                .map(SyspropsMapWrapper::getUnmappedSyspropKey)
+                .collect(Collectors.toSet());
     }
 
     @Override
@@ -152,7 +147,7 @@ public final class SyspropsMapWrapper implements 
Map<String, Object> {
     }
 
     @Override
-    public void putAll(Map<? extends String, ? extends Object> m) {
+    public void putAll(Map<? extends String, ?> m) {
         throw new UnsupportedOperationException("sysprops#putAll(" + m + ") 
N/A");
     }
 
@@ -170,18 +165,11 @@ public final class SyspropsMapWrapper implements 
Map<String, Object> {
     public Collection<Object> values() {
         Properties props = System.getProperties();
         // return a copy in order to avoid concurrent modifications
-        List<Object> values = new ArrayList<>(props.size());
-        for (String key : props.stringPropertyNames()) {
-            if (!isMappedSyspropKey(key)) {
-                continue;
-            }
-            Object v = props.getProperty(key);
-            if (v != null) {
-                values.add(v);
-            }
-        }
-
-        return values;
+        return props
+                .stringPropertyNames().stream()
+                .filter(SyspropsMapWrapper::isMappedSyspropKey)
+                .map(props::get)
+                .collect(Collectors.toList());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java 
b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
index b2e4c1c..d611d1d 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
@@ -68,7 +68,7 @@ public abstract class AbstractChannel
     /**
      * Default growth factor function used to resize response buffers
      */
-    public static final Int2IntFunction RESPONSE_BUFFER_GROWTH_FACTOR = 
Int2IntFunction.Utils.add(Byte.SIZE);
+    public static final Int2IntFunction RESPONSE_BUFFER_GROWTH_FACTOR = 
Int2IntFunction.add(Byte.SIZE);
 
     protected enum GracefulState {
         Opened, CloseSent, CloseReceived, Closed
@@ -125,11 +125,7 @@ public abstract class AbstractChannel
     }
 
     public void addRequestHandlers(Collection<? extends 
RequestHandler<Channel>> handlers) {
-        if (GenericUtils.size(handlers) > 0) {
-            for (RequestHandler<Channel> h : handlers) {
-                addRequestHandler(h);
-            }
-        }
+        GenericUtils.forEach(handlers, this::addRequestHandler);
     }
 
     public void addRequestHandler(RequestHandler<Channel> handler) {
@@ -505,14 +501,11 @@ public abstract class AbstractChannel
 
                 try {
                     long timeout = 
PropertyResolverUtils.getLongProperty(channel, 
FactoryManager.CHANNEL_CLOSE_TIMEOUT, 
FactoryManager.DEFAULT_CHANNEL_CLOSE_TIMEOUT);
-                    s.writePacket(buffer, timeout, 
TimeUnit.MILLISECONDS).addListener(new SshFutureListener<IoWriteFuture>() {
-                        @Override
-                        public void operationComplete(IoWriteFuture future) {
-                            if (future.isWritten()) {
-                                handleClosePacketWritten(channel, immediately);
-                            } else {
-                                handleClosePacketWriteFailure(channel, 
immediately, future.getException());
-                            }
+                    s.writePacket(buffer, timeout, 
TimeUnit.MILLISECONDS).addListener(future -> {
+                        if (future.isWritten()) {
+                            handleClosePacketWritten(channel, immediately);
+                        } else {
+                            handleClosePacketWriteFailure(channel, 
immediately, future.getException());
                         }
                     });
                 } catch (IOException e) {
@@ -815,7 +808,7 @@ public abstract class AbstractChannel
 
     @Override
     public <T> T resolveAttribute(AttributeKey<T> key) {
-        return AttributeStore.Utils.resolveAttribute(this, key);
+        return AttributeStore.resolveAttribute(this, key);
     }
 
     protected void configureWindow() {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java
index 3268469..7fdaf1c 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelRequestHandler.java
@@ -28,13 +28,7 @@ import org.apache.sshd.common.util.buffer.Buffer;
 public interface ChannelRequestHandler extends RequestHandler<Channel> {
 
     // required because of generics issues
-    Transformer<ChannelRequestHandler, RequestHandler<Channel>> CHANN2HNDLR =
-        new Transformer<ChannelRequestHandler, RequestHandler<Channel>>() {
-            @Override
-            public RequestHandler<Channel> transform(ChannelRequestHandler 
input) {
-                return input;
-            }
-        };
+    Transformer<ChannelRequestHandler, RequestHandler<Channel>> CHANN2HNDLR = 
Transformer.identity();
 
     @Override
     Result process(Channel channel, String request, boolean wantReply, Buffer 
buffer) throws Exception;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java 
b/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
index 82e3cbf..f8c01c7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
@@ -20,11 +20,12 @@ package org.apache.sshd.common.channel;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.EnumMap;
 import java.util.EnumSet;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.apache.sshd.common.util.GenericUtils;
 
@@ -293,15 +294,8 @@ public enum PtyMode {
     public static final Set<PtyMode> MODES = 
Collections.unmodifiableSet(EnumSet.allOf(PtyMode.class));
 
     private static final Map<Integer, PtyMode> COMMANDS =
-            Collections.unmodifiableMap(new HashMap<Integer, 
PtyMode>(MODES.size()) {
-                private static final long serialVersionUID = 1L;    // we're 
not serializing it
-
-                {
-                    for (PtyMode c : PtyMode.MODES) {
-                        put(c.toInt(), c);
-                    }
-                }
-            });
+            Collections.unmodifiableMap(
+                    GenericUtils.toSortedMap(MODES, PtyMode::toInt, 
Function.identity(), Comparator.naturalOrder()));
 
     private int v;
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java 
b/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java
index b7ee317..650fe55 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/SttySupport.java
@@ -245,9 +245,7 @@ public final class SttySupport {
      */
     public static String exec(final String cmd)
             throws IOException, InterruptedException {
-        return exec("sh",
-                "-c",
-                cmd);
+        return exec("sh", "-c", cmd);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java 
b/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java
index d85e51d..0ca48ef 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/Window.java
@@ -47,13 +47,9 @@ public class Window extends AbstractLoggingBean implements 
java.nio.channels.Cha
     /**
      * Default {@link Predicate} used to test if space became available
      */
-    public static final Predicate<Window> SPACE_AVAILABLE_PREDICATE = new 
Predicate<Window>() {
-        @SuppressWarnings("synthetic-access")
-        @Override
-        public boolean test(Window input) {
-            // NOTE: we do not call "getSize()" on purpose in order to avoid 
the lock
-            return input.sizeHolder.get() > 0;
-        }
+    public static final Predicate<Window> SPACE_AVAILABLE_PREDICATE = input -> 
{
+        // NOTE: we do not call "getSize()" on purpose in order to avoid the 
lock
+        return input.sizeHolder.get() > 0;
     };
 
     private final AtomicBoolean closed = new AtomicBoolean(false);
@@ -230,13 +226,9 @@ public class Window extends AbstractLoggingBean implements 
java.nio.channels.Cha
         checkInitialized("waitAndConsume");
 
         synchronized (lock) {
-            waitForCondition(new Predicate<Window>() {
-                @SuppressWarnings("synthetic-access")
-                @Override
-                public boolean test(Window input) {
-                    // NOTE: we do not call "getSize()" on purpose in order to 
avoid the lock
-                    return input.sizeHolder.get() >= len;
-                }
+            waitForCondition(input -> {
+                // NOTE: we do not call "getSize()" on purpose in order to 
avoid the lock
+                return input.sizeHolder.get() >= len;
             }, maxWaitTime);
 
             if (log.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java 
b/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java
index 409bade..3c3403c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/cipher/BuiltinCiphers.java
@@ -98,7 +98,7 @@ public enum BuiltinCiphers implements CipherFactory {
          * and then the JVM re-started. Therefore, the answer is not going to
          * change while the JVM is running
          */
-        this.supported = Constants.NONE.equals(factoryName) || 
Cipher.Utils.checkSupported(this.transformation, this.keysize);
+        this.supported = Constants.NONE.equals(factoryName) || 
Cipher.checkSupported(this.transformation, this.keysize);
     }
 
     @Override
@@ -237,7 +237,7 @@ public enum BuiltinCiphers implements CipherFactory {
      * (case <U>insensitive</U>) the provided name - {@code null} if no match
      */
     public static BuiltinCiphers fromFactoryName(String name) {
-        return NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, VALUES);
+        return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, 
VALUES);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java 
b/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java
index 6f35973..dbf7f94 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/cipher/Cipher.java
@@ -69,6 +69,7 @@ public interface Cipher extends CipherInformation {
      * Utility class to help using {@link Cipher}s
      */
     // CHECKSTYLE:OFF
+    @Deprecated
     final class Utils {
     // CHECKSTYLE:ON
 
@@ -76,26 +77,30 @@ public interface Cipher extends CipherInformation {
             throw new UnsupportedOperationException("No instance allowed");
         }
 
-        /**
-         * @param xform The full cipher transformation - e.g., 
AES/CBC/NoPadding -
-         * never {@code null}/empty
-         * @param keyLength The required key length in bits - always positive
-         * @return {@code true} if the cipher transformation <U>and</U> 
required
-         * key length are supported
-         * @see javax.crypto.Cipher#getMaxAllowedKeyLength(String)
-         */
         public static boolean checkSupported(String xform, int keyLength) {
-            ValidateUtils.checkNotNullAndNotEmpty(xform, "No transformation");
-            if (keyLength <= 0) {
-                throw new IllegalArgumentException("Bad key length (" + 
keyLength + ") for cipher=" + xform);
-            }
+            return Cipher.checkSupported(xform, keyLength);
+        }
+    }
+
+    /**
+     * @param xform The full cipher transformation - e.g., AES/CBC/NoPadding -
+     * never {@code null}/empty
+     * @param keyLength The required key length in bits - always positive
+     * @return {@code true} if the cipher transformation <U>and</U> required
+     * key length are supported
+     * @see javax.crypto.Cipher#getMaxAllowedKeyLength(String)
+     */
+    static boolean checkSupported(String xform, int keyLength) {
+        ValidateUtils.checkNotNullAndNotEmpty(xform, "No transformation");
+        if (keyLength <= 0) {
+            throw new IllegalArgumentException("Bad key length (" + keyLength 
+ ") for cipher=" + xform);
+        }
 
-            try {
-                int maxKeyLength = 
javax.crypto.Cipher.getMaxAllowedKeyLength(xform);
-                return maxKeyLength >= keyLength;
-            } catch (Exception e) {
-                return false;
-            }
+        try {
+            int maxKeyLength = 
javax.crypto.Cipher.getMaxAllowedKeyLength(xform);
+            return maxKeyLength >= keyLength;
+        } catch (Exception e) {
+            return false;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java 
b/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java
index dbc2359..9dfd064 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java
@@ -24,13 +24,12 @@ import java.security.spec.ECFieldFp;
 import java.security.spec.ECParameterSpec;
 import java.security.spec.ECPoint;
 import java.security.spec.EllipticCurve;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.EnumSet;
 import java.util.List;
 import java.util.Set;
-import java.util.TreeSet;
+import java.util.stream.Collectors;
 
 import org.apache.sshd.common.NamedResource;
 import org.apache.sshd.common.OptionalFeature;
@@ -103,49 +102,31 @@ public enum ECCurves implements NamedResource, 
OptionalFeature {
      * A {@link Set} of all the known curves names
      */
     public static final Set<String> NAMES =
-            Collections.unmodifiableSet(new 
TreeSet<String>(String.CASE_INSENSITIVE_ORDER) {
-                private static final long serialVersionUID = 1L;    // we're 
not serializing it
-
-                {
-                    for (ECCurves c : VALUES) {
-                        add(c.getName());
-                    }
-                }
-            });
+            Collections.unmodifiableSet(GenericUtils.mapSort(
+                    VALUES,
+                    ECCurves::getName,
+                    String.CASE_INSENSITIVE_ORDER));
 
     /**
      * A {@link Set} of all the known curves key types
      */
     public static final Set<String> KEY_TYPES =
-            Collections.unmodifiableSet(new 
TreeSet<String>(String.CASE_INSENSITIVE_ORDER) {
-                private static final long serialVersionUID = 1L;    // we're 
not serializing it
-
-                {
-                    for (ECCurves c : VALUES) {
-                        add(c.getKeyType());
-                    }
-                }
-            });
-
-    public static final Comparator<ECCurves> BY_KEY_SIZE = new 
Comparator<ECCurves>() {
-        @Override
-        public int compare(ECCurves o1, ECCurves o2) {
-            int k1 = (o1 == null) ? Integer.MAX_VALUE : o1.getKeySize();
-            int k2 = (o2 == null) ? Integer.MAX_VALUE : o2.getKeySize();
-            return Integer.compare(k1, k2);
-        }
+            Collections.unmodifiableSet(GenericUtils.mapSort(
+                    VALUES,
+                    ECCurves::getKeyType,
+                    String.CASE_INSENSITIVE_ORDER));
+
+    public static final Comparator<ECCurves> BY_KEY_SIZE = (o1, o2) -> {
+        int k1 = (o1 == null) ? Integer.MAX_VALUE : o1.getKeySize();
+        int k2 = (o2 == null) ? Integer.MAX_VALUE : o2.getKeySize();
+        return Integer.compare(k1, k2);
     };
 
     public static final List<ECCurves> SORTED_KEY_SIZE =
-            Collections.unmodifiableList(
-                    new ArrayList<ECCurves>(VALUES) {
-                        // Not serializing it
-                        private static final long serialVersionUID = 1L;
-
-                        {
-                            Collections.sort(this, BY_KEY_SIZE);
-                        }
-                    });
+            Collections.unmodifiableList(VALUES.stream()
+                    .sorted(BY_KEY_SIZE)
+                    .collect(Collectors.toList()));
+
     private final String name;
     private final String keyType;
     private final ECParameterSpec params;
@@ -230,7 +211,7 @@ public enum ECCurves implements NamedResource, 
OptionalFeature {
      * match found
      */
     public static ECCurves fromCurveName(String name) {
-        return NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, VALUES);
+        return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, 
VALUES);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java
index 8365226..bf547c9 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java
@@ -151,7 +151,7 @@ public enum BuiltinCompressions implements 
CompressionFactory {
     }
 
     public static BuiltinCompressions fromFactoryName(String name) {
-        return NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, VALUES);
+        return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, 
VALUES);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java
index 4031a74..246cae0 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java
@@ -41,7 +41,7 @@ public abstract class NamedFactoriesListParseResult<T, F 
extends NamedFactory<T>
 
     @Override
     public String toString() {
-        return "parsed=" + NamedResource.Utils.getNames(getParsedFactories())
+        return "parsed=" + NamedResource.getNames(getParsedFactories())
                 + ";unknown=" + GenericUtils.join(getUnsupportedFactories(), 
',');
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java
index 3559d64..feb45f4 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java
@@ -51,7 +51,7 @@ public abstract class NamedResourceListParseResult<R extends 
NamedResource> exte
 
     @Override
     public String toString() {
-        return "parsed=" + NamedResource.Utils.getNames(getParsedResources())
+        return "parsed=" + NamedResource.getNames(getParsedResources())
                 + ";unknown=" + GenericUtils.join(getUnsupportedResources(), 
',');
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java
index 27a42a2..c11c865 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/config/SshConfigFileReader.java
@@ -501,7 +501,7 @@ public final class SshConfigFileReader {
         ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), 
"Unsupported cipher(s) (%s) in %s", unsupported, value);
 
         List<NamedFactory<Cipher>> factories =
-                BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
+                BuiltinFactory.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
         
manager.setCipherFactories(ValidateUtils.checkNotNullAndNotEmpty(factories, "No 
known/unsupported ciphers(s): %s", value));
         return manager;
     }
@@ -519,7 +519,7 @@ public final class SshConfigFileReader {
         ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), 
"Unsupported signatures (%s) in %s", unsupported, value);
 
         List<NamedFactory<Signature>> factories =
-                BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
+                BuiltinFactory.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
         
manager.setSignatureFactories(ValidateUtils.checkNotNullAndNotEmpty(factories, 
"No known/supported signatures: %s", value));
         return manager;
     }
@@ -537,7 +537,7 @@ public final class SshConfigFileReader {
         ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), 
"Unsupported MAC(s) (%s) in %s", unsupported, value);
 
         List<NamedFactory<Mac>> factories =
-                BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
+                BuiltinFactory.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
         
manager.setMacFactories(ValidateUtils.checkNotNullAndNotEmpty(factories, "No 
known/supported MAC(s): %s", value));
         return manager;
     }
@@ -573,7 +573,7 @@ public final class SshConfigFileReader {
         ValidateUtils.checkTrue(lenient || GenericUtils.isEmpty(unsupported), 
"Unsupported KEX(s) (%s) in %s", unsupported, value);
 
         List<NamedFactory<KeyExchange>> factories =
-                
NamedFactory.Utils.setUpTransformedFactories(ignoreUnsupported, 
result.getParsedFactories(), xformer);
+                NamedFactory.setUpTransformedFactories(ignoreUnsupported, 
result.getParsedFactories(), xformer);
         
manager.setKeyExchangeFactories(ValidateUtils.checkNotNullAndNotEmpty(factories,
 "No known/supported KEXS(s): %s", value));
         return manager;
     }
@@ -621,7 +621,7 @@ public final class SshConfigFileReader {
             ValidateUtils.checkTrue(lenient || 
GenericUtils.isEmpty(unsupported), "Unsupported compressions(s) (%s) in %s", 
unsupported, value);
 
             List<NamedFactory<Compression>> factories =
-                    BuiltinFactory.Utils.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
+                    BuiltinFactory.setUpFactories(ignoreUnsupported, 
result.getParsedFactories());
             // SSH can work without compression
             if (GenericUtils.size(factories) > 0) {
                 manager.setCompressionFactories(factories);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java
index f63ca5e..7a3623b 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/BuiltinIdentities.java
@@ -33,7 +33,6 @@ import java.util.Collections;
 import java.util.EnumSet;
 import java.util.Objects;
 import java.util.Set;
-import java.util.TreeSet;
 
 import org.apache.sshd.common.NamedResource;
 import org.apache.sshd.common.util.GenericUtils;
@@ -56,13 +55,9 @@ public enum BuiltinIdentities implements Identity {
             
Collections.unmodifiableSet(EnumSet.allOf(BuiltinIdentities.class));
 
     public static final Set<String> NAMES =
-            Collections.unmodifiableSet(new 
TreeSet<String>(String.CASE_INSENSITIVE_ORDER) {
-                private static final long serialVersionUID = 1L;    // we're 
not serializing it
-
-                {
-                    addAll(NamedResource.Utils.getNameList(VALUES));
-                }
-            });
+            Collections.unmodifiableSet(GenericUtils.asSortedSet(
+                        String.CASE_INSENSITIVE_ORDER,
+                        NamedResource.getNameList(VALUES)));
 
     private final String name;
     private final String algorithm;
@@ -111,7 +106,7 @@ public enum BuiltinIdentities implements Identity {
      * value matches case <U>insensitive</U> or {@code null} if no match found
      */
     public static BuiltinIdentities fromName(String name) {
-        return NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, VALUES);
+        return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, 
VALUES);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java 
b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java
index 5dc90ef..c06f9e9 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/KeyUtils.java
@@ -296,6 +296,7 @@ public final class KeyUtils {
             for (String n : names) {
                 PublicKeyEntryDecoder<?, ?> prev = 
BY_KEY_TYPE_DECODERS_MAP.put(n, decoder);
                 if (prev != null) {
+                    //noinspection UnnecessaryContinue
                     continue;   // debug breakpoint
                 }
             }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java
index 5ea14aa..6897338 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/PublicKeyEntry.java
@@ -172,7 +172,7 @@ public class PublicKeyEntry implements Serializable {
      * @throws IllegalArgumentException if bad format found
      * @see #parsePublicKeyEntry(PublicKeyEntry, String)
      */
-    public static final PublicKeyEntry parsePublicKeyEntry(String data) throws 
IllegalArgumentException {
+    public static PublicKeyEntry parsePublicKeyEntry(String data) throws 
IllegalArgumentException {
         if (GenericUtils.isEmpty(data)) {
             return null;
         } else {
@@ -189,7 +189,7 @@ public class PublicKeyEntry implements Serializable {
      * @return The updated entry instance
      * @throws IllegalArgumentException if bad format found
      */
-    public static final <E extends PublicKeyEntry> E parsePublicKeyEntry(E 
entry, String data) throws IllegalArgumentException {
+    public static <E extends PublicKeyEntry> E parsePublicKeyEntry(E entry, 
String data) throws IllegalArgumentException {
         if (GenericUtils.isEmpty(data) || (entry == null)) {
             return entry;
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java 
b/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java
index 01ed09a..a600419 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/digest/BuiltinDigests.java
@@ -130,7 +130,7 @@ public enum BuiltinDigests implements DigestFactory {
      * (case <U>insensitive</U>) the provided name - {@code null} if no match
      */
     public static BuiltinDigests fromFactoryName(String name) {
-        return NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, VALUES);
+        return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, 
VALUES);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java 
b/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java
index 367a12e..8755593 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/file/util/BaseFileSystem.java
@@ -146,12 +146,9 @@ public abstract class BaseFileSystem<T extends Path> 
extends FileSystem {
         }
 
         final Pattern regex = Pattern.compile(expr);
-        return new PathMatcher() {
-            @Override
-            public boolean matches(Path path) {
-                Matcher m = regex.matcher(path.toString());
-                return m.matches();
-            }
+        return path -> {
+            Matcher m = regex.matcher(path.toString());
+            return m.matches();
         };
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java 
b/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java
index 50eba2e..9181c2d 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/file/util/MockFileSystem.java
@@ -52,6 +52,7 @@ public class MockFileSystem extends FileSystem {
     @Override
     public void close() throws IOException {
         if (open.getAndSet(false)) {
+            //noinspection UnnecessaryReturnStatement
             return; // debug breakpoint
         }
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
index 48c8e1c..b774b37 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
@@ -33,7 +33,6 @@ import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.sshd.client.channel.ClientChannelEvent;
-import org.apache.sshd.client.future.OpenFuture;
 import org.apache.sshd.common.Closeable;
 import org.apache.sshd.common.Factory;
 import org.apache.sshd.common.FactoryManager;
@@ -41,7 +40,6 @@ import org.apache.sshd.common.PropertyResolverUtils;
 import org.apache.sshd.common.RuntimeSshException;
 import org.apache.sshd.common.SshConstants;
 import org.apache.sshd.common.SshException;
-import org.apache.sshd.common.future.SshFutureListener;
 import org.apache.sshd.common.io.IoAcceptor;
 import org.apache.sshd.common.io.IoHandler;
 import org.apache.sshd.common.io.IoHandlerFactory;
@@ -86,23 +84,13 @@ public class DefaultTcpipForwarder
             Collections.unmodifiableSet(EnumSet.of(ClientChannelEvent.OPENED, 
ClientChannelEvent.CLOSED));
 
     private final ConnectionService service;
-    private final IoHandlerFactory socksProxyIoHandlerFactory = new 
IoHandlerFactory() {
-        @Override
-        public IoHandler create() {
-            return new SocksProxy(getConnectionService());
-        }
-    };
+    private final IoHandlerFactory socksProxyIoHandlerFactory = () -> new 
SocksProxy(getConnectionService());
     private final Session sessionInstance;
     private final Map<Integer, SshdSocketAddress> localToRemote = new 
HashMap<>();
     private final Map<Integer, SshdSocketAddress> remoteToLocal = new 
HashMap<>();
     private final Map<Integer, SocksProxy> dynamicLocal = new HashMap<>();
     private final Set<LocalForwardingEntry> localForwards = new HashSet<>();
-    private final IoHandlerFactory staticIoHandlerFactory = new 
IoHandlerFactory() {
-        @Override
-        public IoHandler create() {
-            return new StaticIoHandler();
-        }
-    };
+    private final IoHandlerFactory staticIoHandlerFactory = 
StaticIoHandler::new;
     private final Collection<PortForwardingEventListener> listeners =
             EventListenerUtils.synchronizedListenersSet();
     private final PortForwardingEventListener listenerProxy;
@@ -586,19 +574,16 @@ public class DefaultTcpipForwarder
             session.setAttribute(TcpipClientChannel.class, channel);
 
             service.registerChannel(channel);
-            channel.open().addListener(new SshFutureListener<OpenFuture>() {
-                @Override
-                public void operationComplete(OpenFuture future) {
-                    Throwable t = future.getException();
-                    if (t != null) {
-                        log.warn("Failed ({}) to open channel for session={}: 
{}",
-                                 t.getClass().getSimpleName(), session, 
t.getMessage());
-                        if (log.isDebugEnabled()) {
-                            log.debug("sessionCreated(" + session + ") 
channel=" + channel + " open failure details", t);
-                        }
-                        
DefaultTcpipForwarder.this.service.unregisterChannel(channel);
-                        channel.close(false);
+            channel.open().addListener(future -> {
+                Throwable t = future.getException();
+                if (t != null) {
+                    log.warn("Failed ({}) to open channel for session={}: {}",
+                             t.getClass().getSimpleName(), session, 
t.getMessage());
+                    if (log.isDebugEnabled()) {
+                        log.debug("sessionCreated(" + session + ") channel=" + 
channel + " open failure details", t);
                     }
+                    
DefaultTcpipForwarder.this.service.unregisterChannel(channel);
+                    channel.close(false);
                 }
             });
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java
index b45562e..f08afc9 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/forward/LocalForwardingEntry.java
@@ -72,7 +72,7 @@ public class LocalForwardingEntry extends SshdSocketAddress {
      * @return The <U>first</U> entry whose host or alias matches the host 
name - case
      * <U>sensitive</U> <B>and</B> has a matching port - {@code null} if no 
match found
      */
-    public static final LocalForwardingEntry findMatchingEntry(String host, 
int port, Collection<? extends LocalForwardingEntry> entries) {
+    public static LocalForwardingEntry findMatchingEntry(String host, int 
port, Collection<? extends LocalForwardingEntry> entries) {
         if (GenericUtils.isEmpty(host) || (port <= 0) || 
(GenericUtils.isEmpty(entries))) {
             return null;
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java 
b/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
index 9a04394..5e38e01 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
@@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.sshd.client.future.OpenFuture;
 import org.apache.sshd.common.SshException;
-import org.apache.sshd.common.future.SshFutureListener;
 import org.apache.sshd.common.io.IoHandler;
 import org.apache.sshd.common.io.IoSession;
 import org.apache.sshd.common.session.ConnectionService;
@@ -154,12 +153,7 @@ public class SocksProxy extends AbstractCloseable 
implements IoHandler {
                 SshdSocketAddress remote = new SshdSocketAddress(host, port);
                 channel = new 
TcpipClientChannel(TcpipClientChannel.Type.Direct, session, remote);
                 service.registerChannel(channel);
-                channel.open().addListener(new SshFutureListener<OpenFuture>() 
{
-                    @Override
-                    public void operationComplete(OpenFuture future) {
-                        onChannelOpened(future);
-                    }
-                });
+                channel.open().addListener(this::onChannelOpened);
             } else {
                 super.onMessage(buffer);
             }
@@ -271,12 +265,7 @@ public class SocksProxy extends AbstractCloseable 
implements IoHandler {
                 SshdSocketAddress remote = new SshdSocketAddress(host, port);
                 channel = new 
TcpipClientChannel(TcpipClientChannel.Type.Direct, session, remote);
                 service.registerChannel(channel);
-                channel.open().addListener(new SshFutureListener<OpenFuture>() 
{
-                    @Override
-                    public void operationComplete(OpenFuture future) {
-                        onChannelOpened(future);
-                    }
-                });
+                channel.open().addListener(this::onChannelOpened);
             } else {
                 log.debug("Received socks5 connection message");
                 super.onMessage(buffer);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java
index 2d8d1f1..ac1507f 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/global/AbstractOpenSshHostKeysHandler.java
@@ -43,8 +43,8 @@ public abstract class AbstractOpenSshHostKeysHandler extends 
AbstractConnectionS
 
     protected AbstractOpenSshHostKeysHandler(String request) {
         // TODO use only the default parser once ED25519 implementation is 
complete (see SSHD-440)
-        this(request, BufferPublicKeyParser.Utils.aggregate(Arrays.asList(
-                            BufferPublicKeyParser.Utils.DEFAULT,
+        this(request, BufferPublicKeyParser.aggregate(Arrays.asList(
+                            BufferPublicKeyParser.DEFAULT,
                             ED25519BufferPublicKeyParser.IGNORING
                     )));
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
index 415d101..80cb8c4 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
@@ -154,7 +154,7 @@ public abstract class AbstractFactoryManager extends 
AbstractKexFactoryManager i
 
     @Override
     public <T> T resolveAttribute(AttributeKey<T> key) {
-        return AttributeStore.Utils.resolveAttribute(this, key);
+        return AttributeStore.resolveAttribute(this, key);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java
index ba0d014..1310735 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/io/BuiltinIoServiceFactoryFactories.java
@@ -68,7 +68,7 @@ public enum BuiltinIoServiceFactoryFactories implements 
NamedFactory<IoServiceFa
     }
 
     public static BuiltinIoServiceFactoryFactories fromFactoryName(String 
name) {
-        return NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, VALUES);
+        return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, 
VALUES);
     }
 
     public static BuiltinIoServiceFactoryFactories fromFactoryClass(Class<?> 
clazz) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java 
b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
index e2e0eab..176d565 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
@@ -105,16 +105,13 @@ public class MinaConnector extends MinaService implements 
org.apache.sshd.common
             }
         }
         final IoConnectFuture future = new Future(null);
-        getConnector().connect(address).addListener(new 
IoFutureListener<ConnectFuture>() {
-            @Override
-            public void operationComplete(ConnectFuture cf) {
-                if (cf.getException() != null) {
-                    future.setException(cf.getException());
-                } else if (cf.isCanceled()) {
-                    future.cancel();
-                } else {
-                    future.setSession(getSession(cf.getSession()));
-                }
+        
getConnector().connect(address).addListener((IoFutureListener<ConnectFuture>) 
cf -> {
+            if (cf.getException() != null) {
+                future.setException(cf.getException());
+            } else if (cf.isCanceled()) {
+                future.cancel();
+            } else {
+                future.setSession(getSession(cf.getSession()));
             }
         });
         return future;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java 
b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
index b03da53..a6e254d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
@@ -21,7 +21,6 @@ package org.apache.sshd.common.io.mina;
 import java.net.SocketAddress;
 
 import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.future.IoFutureListener;
 import org.apache.mina.core.future.WriteFuture;
 import org.apache.sshd.common.Closeable;
@@ -116,12 +115,7 @@ public class MinaSession extends AbstractInnerCloseable 
implements IoSession {
             @Override
             public org.apache.sshd.common.future.CloseFuture close(boolean 
immediately) {
                 org.apache.mina.core.future.CloseFuture cf = immediately ? 
session.closeNow() : session.closeOnFlush();
-                cf.addListener(new IoFutureListener<IoFuture>() {
-                    @Override
-                    public void operationComplete(IoFuture f) {
-                        future.setValue(Boolean.TRUE);
-                    }
-                });
+                cf.addListener(f -> future.setValue(Boolean.TRUE));
                 return future;
             }
         };
@@ -145,15 +139,12 @@ public class MinaSession extends AbstractInnerCloseable 
implements IoSession {
     // NOTE !!! data buffer may NOT be re-used when method returns - at least 
until IoWriteFuture is signalled
     public IoWriteFuture write(IoBuffer buffer) {
         final Future future = new Future(null);
-        session.write(buffer).addListener(new IoFutureListener<WriteFuture>() {
-            @Override
-            public void operationComplete(WriteFuture cf) {
-                Throwable t = cf.getException();
-                if (t != null) {
-                    future.setException(t);
-                } else {
-                    future.setWritten();
-                }
+        session.write(buffer).addListener((IoFutureListener<WriteFuture>) cf 
-> {
+            Throwable t = cf.getException();
+            if (t != null) {
+                future.setException(t);
+            } else {
+                future.setWritten();
             }
         });
         return future;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
index 9867097..1ed9286 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
@@ -34,23 +34,17 @@ public abstract class Nio2CompletionHandler<V, A> 
implements CompletionHandler<V
 
     @Override
     public void completed(final V result, final A attachment) {
-        AccessController.doPrivileged(new PrivilegedAction<Object>() {
-            @Override
-            public Object run() {
-                onCompleted(result, attachment);
-                return null;
-            }
+        AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
+            onCompleted(result, attachment);
+            return null;
         });
     }
 
     @Override
     public void failed(final Throwable exc, final A attachment) {
-        AccessController.doPrivileged(new PrivilegedAction<Object>() {
-            @Override
-            public Object run() {
-                onFailed(exc, attachment);
-                return null;
-            }
+        AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
+            onFailed(exc, attachment);
+            return null;
         });
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java 
b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
index 080369a..805b9bd 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
@@ -40,7 +40,6 @@ import org.apache.sshd.common.io.IoSession;
 import org.apache.sshd.common.util.GenericUtils;
 import org.apache.sshd.common.util.ValidateUtils;
 import org.apache.sshd.common.util.closeable.AbstractInnerCloseable;
-import org.apache.sshd.common.util.closeable.CloseableUtils;
 
 /**
  */
@@ -76,7 +75,7 @@ public abstract class Nio2Service extends 
AbstractInnerCloseable implements IoSe
 
     public void dispose() {
         try {
-            long maxWait = 
CloseableUtils.getMaxCloseWaitTime(getFactoryManager());
+            long maxWait = Closeable.getMaxCloseWaitTime(getFactoryManager());
             boolean successful = close(true).await(maxWait);
             if (!successful) {
                 throw new SocketTimeoutException("Failed to receive closure 
confirmation within " + maxWait + " millis");

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java 
b/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
index a139fa6..5f09c49 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
@@ -234,7 +234,7 @@ public enum BuiltinDHFactories implements DHFactory {
      * or {@code null} if no match found
      */
     public static BuiltinDHFactories fromFactoryName(String name) {
-        return NamedResource.Utils.findByName(name, 
String.CASE_INSENSITIVE_ORDER, VALUES);
+        return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, 
VALUES);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java 
b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
index 6a7042f..1f8908c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
@@ -23,6 +23,7 @@ import java.security.KeyFactory;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
 import java.security.PublicKey;
+
 import javax.crypto.KeyAgreement;
 import javax.crypto.spec.DHParameterSpec;
 import javax.crypto.spec.DHPublicKeySpec;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java 
b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
index cce5cd1..1559858 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
@@ -57,10 +57,10 @@ public interface KexFactoryManager extends 
KeyPairProviderHolder, SignatureFacto
      */
     List<NamedFactory<Cipher>> getCipherFactories();
     default String getCipherFactoriesNameList() {
-        return NamedResource.Utils.getNames(getCipherFactories());
+        return NamedResource.getNames(getCipherFactories());
     }
     default List<String> getCipherFactoriesNames() {
-        return NamedResource.Utils.getNameList(getCipherFactories());
+        return NamedResource.getNameList(getCipherFactories());
     }
 
     void setCipherFactories(List<NamedFactory<Cipher>> cipherFactories);
@@ -87,10 +87,10 @@ public interface KexFactoryManager extends 
KeyPairProviderHolder, SignatureFacto
      */
     List<NamedFactory<Compression>> getCompressionFactories();
     default String getCompressionFactoriesNameList() {
-        return NamedResource.Utils.getNames(getCompressionFactories());
+        return NamedResource.getNames(getCompressionFactories());
     }
     default List<String> getCompressionFactoriesNames() {
-        return NamedResource.Utils.getNameList(getCompressionFactories());
+        return NamedResource.getNameList(getCompressionFactories());
     }
 
     void setCompressionFactories(List<NamedFactory<Compression>> 
compressionFactories);
@@ -117,10 +117,10 @@ public interface KexFactoryManager extends 
KeyPairProviderHolder, SignatureFacto
      */
     List<NamedFactory<Mac>> getMacFactories();
     default String getMacFactoriesNameList() {
-        return NamedResource.Utils.getNames(getMacFactories());
+        return NamedResource.getNames(getMacFactories());
     }
     default List<String> getMacFactoriesNames() {
-        return NamedResource.Utils.getNameList(getMacFactories());
+        return NamedResource.getNameList(getMacFactories());
     }
 
     void setMacFactories(List<NamedFactory<Mac>> macFactories);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java 
b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
index 3216a71..da6278a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
@@ -19,11 +19,11 @@
 
 package org.apache.sshd.common.kex;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.apache.sshd.common.util.GenericUtils;
 
@@ -43,34 +43,24 @@ public enum KexProposalOption {
     S2CLANG(Constants.PROPOSAL_LANG_STOC, "languages (server to client)");
 
     /**
+     * Compares values according to {@link 
KexProposalOption#getProposalIndex()}
+     */
+    public static final Comparator<KexProposalOption> BY_PROPOSAL_INDEX =
+            Comparator.comparingInt(KexProposalOption::getProposalIndex);
+
+    /**
      * A {@link List} of all the options <U>sorted</U> according to {@link 
#getProposalIndex()}
      *
      * @see #BY_PROPOSAL_INDEX
      */
     public static final List<KexProposalOption> VALUES =
-        Collections.unmodifiableList(new 
ArrayList<KexProposalOption>(EnumSet.allOf(KexProposalOption.class)) {
-            private static final long serialVersionUID = 1L;    // we're not 
serializing it
-
-            {
-                Collections.sort(this, BY_PROPOSAL_INDEX);
-            }
-        });
+        Collections.unmodifiableList(
+                EnumSet.allOf(KexProposalOption.class).stream()
+                        .sorted(BY_PROPOSAL_INDEX)
+                        .collect(Collectors.toList()));
 
     public static final int PROPOSAL_MAX = VALUES.size();
 
-    /**
-     * Compares values according to {@link 
KexProposalOption#getProposalIndex()}
-     */
-    public static final Comparator<KexProposalOption> BY_PROPOSAL_INDEX =
-        new Comparator<KexProposalOption>() {
-            @Override
-            public int compare(KexProposalOption o1, KexProposalOption o2) {
-                int i1 = (o1 == null) ? -1 : o1.getProposalIndex();
-                int i2 = (o2 == null) ? -1 : o2.getProposalIndex();
-                return Integer.compare(i1, i2);
-            }
-        };
-
     private final int proposalIndex;
 
     private final String description;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java 
b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
index bd5f7ed..7930f69 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
@@ -36,6 +36,12 @@ import org.apache.sshd.common.util.logging.LoggingUtils;
  */
 public interface KeyExchange extends NamedResource {
 
+    Map<Integer, String> GROUP_KEX_OPCODES_MAP =
+            LoggingUtils.generateMnemonicMap(SshConstants.class, 
"SSH_MSG_KEX_DH_GEX_");
+
+    Map<Integer, String> SIMPLE_KEX_OPCODES_MAP =
+            LoggingUtils.generateMnemonicMap(SshConstants.class, 
"SSH_MSG_KEXDH_");
+
     /**
      * Initialize the key exchange algorithm.
      *
@@ -91,33 +97,44 @@ public interface KeyExchange extends NamedResource {
      * @author <a href="mailto:[email protected]";>Apache MINA SSHD 
Project</a>
      */
     // CHECKSTYLE:OFF
+    @Deprecated
     final class Utils {
     // CHECKSTYLE:ON
+
         public static final Map<Integer, String> GROUP_KEX_OPCODES_MAP =
-                LoggingUtils.generateMnemonicMap(SshConstants.class, 
"SSH_MSG_KEX_DH_GEX_");
+                KeyExchange.GROUP_KEX_OPCODES_MAP;
+
         public static final Map<Integer, String> SIMPLE_KEX_OPCODES_MAP =
-                LoggingUtils.generateMnemonicMap(SshConstants.class, 
"SSH_MSG_KEXDH_");
+                KeyExchange.SIMPLE_KEX_OPCODES_MAP;
 
         private Utils() {
             throw new UnsupportedOperationException("No instance allowed");
         }
 
         public static String getGroupKexOpcodeName(int cmd) {
-            String name = GROUP_KEX_OPCODES_MAP.get(cmd);
-            if (GenericUtils.isEmpty(name)) {
-                return SshConstants.getCommandMessageName(cmd);
-            } else {
-                return name;
-            }
+            return KeyExchange.getGroupKexOpcodeName(cmd);
         }
 
         public static String getSimpleKexOpcodeName(int cmd) {
-            String name = SIMPLE_KEX_OPCODES_MAP.get(cmd);
-            if (GenericUtils.isEmpty(name)) {
-                return SshConstants.getCommandMessageName(cmd);
-            } else {
-                return name;
-            }
+            return KeyExchange.getSimpleKexOpcodeName(cmd);
+        }
+    }
+
+    static String getGroupKexOpcodeName(int cmd) {
+        String name = GROUP_KEX_OPCODES_MAP.get(cmd);
+        if (GenericUtils.isEmpty(name)) {
+            return SshConstants.getCommandMessageName(cmd);
+        } else {
+            return name;
+        }
+    }
+
+    static String getSimpleKexOpcodeName(int cmd) {
+        String name = SIMPLE_KEX_OPCODES_MAP.get(cmd);
+        if (GenericUtils.isEmpty(name)) {
+            return SshConstants.getCommandMessageName(cmd);
+        } else {
+            return name;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
index 1991e99..8d36508 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
@@ -25,10 +25,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.security.GeneralSecurityException;
 import java.security.KeyPair;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 import org.apache.sshd.common.util.GenericUtils;
 import org.apache.sshd.common.util.io.IoUtils;
@@ -53,27 +50,12 @@ public abstract class AbstractFileKeyPairProvider extends 
AbstractResourceKeyPai
     }
 
     public void setFiles(Collection<File> files) {
-        if (GenericUtils.isEmpty(files)) {
-            setPaths(Collections.emptyList());
-        } else {
-            List<Path> paths = new ArrayList<>(files.size());
-            for (File f : files) {
-                paths.add(f.toPath());
-            }
-            setPaths(paths);
-        }
+        setPaths(GenericUtils.map(files, File::toPath));
     }
 
     public void setPaths(Collection<? extends Path> paths) {
-        int numPaths = GenericUtils.size(paths);
-        Collection<Path> resolved = (numPaths <= 0) ? Collections.emptyList() 
: new ArrayList<>(paths.size());
         // use absolute path in order to have unique cache keys
-        if (numPaths > 0) {
-            for (Path p : paths) {
-                resolved.add(p.toAbsolutePath());
-            }
-        }
-
+        Collection<Path> resolved = GenericUtils.map(paths, 
Path::toAbsolutePath);
         resetCacheMap(resolved);
         files = resolved;
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/977b7b52/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java
index 5ce1eae..5cd13c1 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractKeyPairProvider.java
@@ -18,13 +18,6 @@
  */
 package org.apache.sshd.common.keyprovider;
 
-import java.security.KeyPair;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.sshd.common.config.keys.KeyUtils;
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.ValidateUtils;
 import org.apache.sshd.common.util.logging.AbstractLoggingBean;
 
 /**
@@ -33,37 +26,9 @@ import 
org.apache.sshd.common.util.logging.AbstractLoggingBean;
  * @author <a href="mailto:[email protected]";>Apache MINA SSHD Project</a>
  */
 public abstract class AbstractKeyPairProvider extends AbstractLoggingBean 
implements KeyPairProvider {
-    // TODO move this code as default interface methods in Java-8
+
     protected AbstractKeyPairProvider() {
         super();
     }
 
-    @Override
-    public KeyPair loadKey(String type) {
-        ValidateUtils.checkNotNullAndNotEmpty(type, "No key type to load");
-
-        Iterable<KeyPair> keys = loadKeys();
-        for (KeyPair key : keys) {
-            String keyType = KeyUtils.getKeyType(key);
-            if (type.equals(keyType)) {
-                return key;
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public List<String> getKeyTypes() {
-        List<String> types = new ArrayList<>();
-        Iterable<KeyPair> keys = loadKeys();
-        for (KeyPair key : keys) {
-            String type = KeyUtils.getKeyType(key);
-            if (GenericUtils.isEmpty(type) || types.contains(type)) {
-                continue;
-            }
-            types.add(type);
-        }
-
-        return types;
-    }
 }

Reply via email to