@@ -0,0 +1,774 @@
+package com.github.sormuras.bach.internal;%0A%0Aimport java.util.function.Supplier;%0A%0A/** Internal %7B@link FunctionalInterface%7D-related utilities. */%0Apublic class Functions %7B%0A%0A  // https://stackoverflow.com/a/35335467/1431016%0A  public static %3CT%3E Supplier%3CT%3E memoize(Supplier%3CT%3E original) %7B%0A    return new Supplier%3C%3E() %7B%0A      Supplier%3CT%3E delegate = this::firstTime;%0A      boolean initialized; // = false%0A%0A      @Override%0A      public T get() %7B%0A        return delegate.get();%0A      %7D%0A%0A      private synchronized T firstTime() %7B%0A        if (!initialized) %7B%0A          T value = original.get();%0A          delegate = () -%3E value;%0A          initialized = true;%0A        %7D%0A        return delegate.get();%0A      %7D%0A    %7D;%0A  %7D%0A%0A  /** Hidden default constructor. */%0A  private Functions() %7B%7D%0A%7D%0A

Add internal function-related utilities