Option<(T, U)> zip<U extends Object>(Option<U> other) { if (other.isSome()) { return Some((v, other.unwrap())); } return None; }