cast<T1> method
Cast this Maybe<T> into an Maybe<T1>, throwing an TypeError if not possible.
This should be used only in cases where variance would get messed up, for example: ``` abstract class A {}
class B extends A { B getB() => this; }
class C extends A {}
A function(A a) => (a is B ? a.getB().just : None
In this case the code would compile but not run.
So, this is needed:
```A function(A a) =>
(a is B ? a.getB().just : None<C>()).cast().valueOr(a);```
Implementation
Maybe<T1> cast<T1>() => _self.fmap<T1>((v) => v as T1);