IO

ix.io.PushbackReader

public class<T>
{
	@buffer: Stack<T>
	@input:  InputStream<T>
}
public new( inputStream: InputStream<T> )
{
	@buffer = new Stack<T>()
	@input  = inputStream
}
public read(): T
{
	if ( @buffer.size )
	{
		return @buffer.pop()
	}
	else
	{
		return @input.read()
	}
}
public pushback( item: T )
{
	@buffer.push( item )
}