castFrom< S, T> method
override
Adapts source to be a Queue<T>.
Any time the queue would produce an element that is not a T,
the element access will throw.
Any time a T value is attempted stored into the adapted queue,
the store will throw unless the value is also an instance of S.
If all accessed elements of source are actually instances of T,
and if all elements stored into the returned queue are actually instance
of S,
then the returned queue can be used as a Queue<T>.
Implementation
static Queue<T> castFrom<S, T>(Queue<S> source) =>
new CastQueue<S, T>(source);