Implement a minimal `Option` that has `map` and `flatMap`. ```scala import scala.{Option => _} // implement here sealed trait Option[+A] { def map[B](f: A => B): Option[B] = fold(None)(a => Some(f(a))) def flatMap[B](f: A => Option[B]): Option[B] = fold(None)(f) def fold[B](ifEmpty : => B)(f: A => B): B = this match { case Some(a) => f(a) case None => ifEmpty } } case class Some[+T](value: T) extends Option[T] case object None extends Option[Nothing] ```