If it's Some, apply the function to the value, else return None.
Option<U> andThen<U>(Option<U> Function(T value) fn) { if (this is Some<T>) { return fn((this as Some<T>).value); } return None<U>(); }