@@ -0,0 +1,1191 @@
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.%0Apackage com.tvl.util;%0A%0Aimport java.util.EmptyStackException;%0A%0A/**%0A * An immutable queue.%0A *%0A * @param %3CT%3E The type of elements in the queue.%0A */%0Apublic interface ImmutableQueue%3CT%3E extends Iterable%3CT%3E %7B%0A%0A    /**%0A     * Gets a value indicating whether this is the empty queue.%0A     *%0A     * @return %7B@code true%7D if this queue is empty; otherwise %7B@code false%7D.%0A     */%0A    boolean isEmpty();%0A%0A    /**%0A     * Gets an empty queue.%0A     */%0A    ImmutableQueue%3CT%3E clear();%0A%0A    /**%0A     * Gets the element at the front of the queue.%0A     *%0A     * @return The element at the front of the queue.%0A     * @throws EmptyStackException if the queue is empty.%0A     */%0A    T peek();%0A%0A    /**%0A     * Adds an element to the back of the queue.%0A     *%0A     * @param value The element to add to the queue.%0A     * @return The new queue.%0A     */%0A    ImmutableQueue%3CT%3E enqueue(T value);%0A%0A    /**%0A     * Returns a queue that is missing the front element.%0A     *%0A     * @return The new queue; never %7B@code null%7D.%0A     * @throws EmptyStackException if the queue is empty.%0A     */%0A    ImmutableQueue%3CT%3E dequeue();%0A%0A%7D%0A

Add the ImmutableQueue interface