package net.openhft.chronicle.core.util;

import org.jetbrains.annotations.NotNull;

import java.util.function.Supplier;

/**
 * A Builder is a configurable Supplier which always creates a new object.
 *
 * @param <T> Of object created
 */
public interface Builder<T> extends Supplier<T> {
    @NotNull
    T build();

    @Override
    @NotNull
    default T get() {
        return build();
    }
}

@@ -132,16 +132,26 @@
 Builder 
+of type T 
 is a con
@@ -164,50 +164,70 @@
 ble 
-Supplier which always creates a new object
+object that can provide%0A * another non-null instance of type T
 .%0A *
@@ -241,17 +241,17 @@
 ram %3CT%3E 
-O
+o
 f object
@@ -255,20 +255,42 @@
 ect 
-creat
+provid
 ed%0A */%0A
+@FunctionalInterface%0A
 publ
@@ -334,16 +334,649 @@
 ier%3CT%3E %7B
+%0A%0A    /**%0A     * Builds and returns a non-null instance of type T.%0A     * %3Cp%3E%0A     * The builder always creates a new instance if the%0A     * instance is mutable. If the instance is immutable,%0A     * the builder may create a new instance or it may return%0A     * a previously existing instance at its own discretion.%0A     * %3Cp%3E%0A     * As opposed to a factory, a Builder is often unipotent%0A     * meaning that this method can be invoked at most one time.%0A     *%0A     * @return a non-null instance of type T%0A     *%0A     * @throws IllegalStateException if the builder is unipotent%0A     * and this method is invoked more than once.%0A     */
 %0A    @No
@@ -1020,24 +1020,59 @@
    @NotNull%0A
+    @Deprecated // For removal now%0A
     default 

Improve Builder doc and deprecate get(), work on #185