package org.knowm.xchange.interceptor;

import com.google.common.base.Suppliers;
import java.util.Collection;
import java.util.ServiceLoader;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import si.mazi.rescu.Interceptor;

public class InterceptorProvider {

    private static final Supplier<Collection<Interceptor>> INTERCEPTORS_SUPPLIER =
            Suppliers.memoize(
                    () -> {
                        final ServiceLoader<Interceptor> serviceLoader = ServiceLoader.load(Interceptor.class);
                        return StreamSupport.stream(serviceLoader.spliterator(), false)
                                .collect(Collectors.toSet());
                    });

    public static Collection<Interceptor> provide() {
        return INTERCEPTORS_SUPPLIER.get();
    }
}
package org.knowm.xchange.interceptor;

import com.google.common.base.Suppliers;
import java.util.Collection;
import java.util.ServiceLoader;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import si.mazi.rescu.Interceptor;

public class InterceptorProvider {

  private static final Supplier<Collection<Interceptor>> INTERCEPTORS_SUPPLIER =
      Suppliers.memoize(
          () -> {
            final ServiceLoader<Interceptor> serviceLoader = ServiceLoader.load(Interceptor.class);
            return StreamSupport.stream(serviceLoader.spliterator(), false)
                .collect(Collectors.toSet());
          });

  public static Collection<Interceptor> provide() {
    return INTERCEPTORS_SUPPLIER.get();
  }
}

--- 
+++ 
@@ -10,15 +10,15 @@
 
 public class InterceptorProvider {
 
-  private static final Supplier<Collection<Interceptor>> INTERCEPTORS_SUPPLIER =
-      Suppliers.memoize(
-          () -> {
-            final ServiceLoader<Interceptor> serviceLoader = ServiceLoader.load(Interceptor.class);
-            return StreamSupport.stream(serviceLoader.spliterator(), false)
-                .collect(Collectors.toSet());
-          });
+    private static final Supplier<Collection<Interceptor>> INTERCEPTORS_SUPPLIER =
+            Suppliers.memoize(
+                    () -> {
+                        final ServiceLoader<Interceptor> serviceLoader = ServiceLoader.load(Interceptor.class);
+                        return StreamSupport.stream(serviceLoader.spliterator(), false)
+                                .collect(Collectors.toSet());
+                    });
 
-  public static Collection<Interceptor> provide() {
-    return INTERCEPTORS_SUPPLIER.get();
-  }
+    public static Collection<Interceptor> provide() {
+        return INTERCEPTORS_SUPPLIER.get();
+    }
 }
Add possibility to use custom Interceptors
