Zips self with another Option.
@override Option<(T, U)> zip<U>(Option<U> other) { if (other.isSome()) { return Some((v, other.unwrap())); } return None; }