Maybe
Container interface that is used to describe that there is either some value wrapped in the data class Some or the None data object. It's a copy of Option from Rust stdlib.
Why not just use E? instead of Maybe<E>? The reason is simple. If you E is nullable and you have possibility of having either element of type E or a null, then you won't distinguish null as possible value and null as absence of such value. That's why you should write Maybe<E> and then you'll be able to distinguish null from None.