@@ -0,0 +1,1006 @@
+package org.ethereumclassic.etherjar.util;%0A%0Aimport java.util.function.Supplier;%0A%0A/**%0A * Lazy related util methods.%0A */%0Apublic interface Lazy %7B%0A%0A    /**%0A     * Memoize a given %7B@link Supplier%7D value.%0A     *%0A     * %3Cpre%3E%7B@code%0A     * Supplier%3CString%3E str = Lazy.wrap(%0A     *          () -%3E String.format(%22%25d%22, a delayed calculation));%0A     * %7D%3C/pre%3E%0A     *%0A     * @param supplier a value supplier%0A     * @param %3CT%3E a java object type is needed to store%0A     * @return a lazy cached supplier value%0A     */%0A    static %3CT%3E Supplier%3CT%3E wrap(Supplier%3C? extends T%3E supplier) %7B%0A        return new Supplier%3CT%3E() %7B%0A%0A            private volatile T cached;%0A%0A            @Override%0A            public T get() %7B%0A                if (cached == null) %7B%0A                    synchronized (this) %7B%0A                        if (cached == null) %7B%0A                            cached = supplier.get();%0A                        %7D%0A                    %7D%0A                %7D%0A%0A                return cached;%0A            %7D%0A        %7D;%0A    %7D%0A%7D%0A

Add a supplier memoizer as an utility interface