export interface IIterator<T, E = undefined> {
    hasNext(): boolean;
    next(): T | E;
    forEachRemaining(callback: (element: T) => void): void;
    remove?(): T | E;
    reset?(): void;
    [Symbol.iterator](): IterableIterator<T>;
    getIterableIterator(): IterableIterator<T>;
}
