# castFrom<S, T> method

List<T> castFrom <S, T>(List<S> source)

Adapts `source` to be a `List<T>`.

Any time the list 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 list, 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 list are actually instance of `S`, then the returned list can be used as a `List<T>`.

## Implementation

    static List<T> castFrom<S, T>(List<S> source) => new CastList<S, T>(source);